2016-05-03 9 views
1

Iデータベースからbyte[]画像を読み取るしようとしていorg.hibernate.MappingException:列の型を判別できませんでした:[org.hibernate.mapping.Column(imageService)] "}}

これが最初です。

@Entity 
public class ReceivingInspection implements Serializable { 

    /** 
    * The id. 
    */ 
    @Id 
    @GeneratedValue(strategy = GenerationType.AUTO) 
    @Column(name="RECEIVING_INSPECTION_ID") 
    private int id; 

    @OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL, mappedBy = "receivingInspection") 
    private List<ReceivingInspectionImage> receivingInspectionImages; 

    // Constructors, getters, setters 
} 

そして、これは私の第二の実体である:

@Entity 
public class ReceivingInspectionImage implements Serializable { 

    @EJB 
    private ImageService imageService; 

    @Id 
    @GeneratedValue(strategy = GenerationType.AUTO) 
    @Column(name="RECEIVING_INSPECTION_IMAGE_ID") 
    private int id; 

    @Lob @Basic(fetch = FetchType.LAZY) 
    @Column(length=16777000) 
    private byte[] image; 

    @ManyToOne(fetch = FetchType.LAZY) 
    private ReceivingInspection receivingInspection; 

    public byte[] getImage() { 
     return imageService.getImage(id); 
    } 

    // Constructors, getters, setters 
} 

は、これが私のDAOです:

私の2つのエンティティの以下のために、ReceivingInspectionImage:

org.hibernate.MappingException:テーブルで、my.application.util.ImageService:のためのタイプを判断できませんでした私は自分のアプリケーションを配備しようとしていた場合

@PersistenceContext 
private EntityManager em; 

public byte[] getImage(int id) { 
    Query query = em 
      .createNativeQuery("SELECT * FROM RECEIVINGINSPECTIONIMAGE WHERE RECEIVING_INSPECTION_IMAGE_ID = ?"); 
    query.setParameter(1, id); 
    ReceivingInspectionImage image = (ReceivingInspectionImage) query.getSingleResult(); 
    return image.getImage(); 
} 

、私が取得しますカラム:[org.hibernate.mapping.Column(imageService)] "}}

何が原因ですか?私はHibernateマッピングを使用している方法で間違いがありますか?

+2

例外は文字通り有効なデータベース列として 'ReceivingInspectionImage'エンティティの' imageService'フィールドを認識しないと言います。なぜエンティティにEJBを注入していますか? – BalusC

答えて

3

問題は、あなたがEntity内のサービスを注入してはならない、ここで

@EJB 
private ImageService imageService; 

に位置、Hibernateは列にマップしようとします。

DAOレイヤーをEntityから呼び出さないでください。DAOと対話するサービスを作成してください。

関連する問題