2016-05-03 6 views
1

Ich versuche, ein byte[] Bild aus der Datenbank zu lesenorg.hibernate.MappingException: Typen kann nicht für Spalten bestimmen. [Org.hibernate.mapping.Column (Imageservice)] "}}

Dies ist die erste meine zwei Entitäten:

@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 
} 

Und das ist meine zweite Einheit:

@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 
} 

Das ist mein DAO:

@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(); 
} 

Wenn ich versuche, meine Anwendung bereitstellen, erhalte ich ein:

org.hibernate.MappingException: bestimmen Typ konnte nicht für: my.application.util.ImageService, bei Tisch: ReceivingInspectionImage, für Spalten: [org.hibernate.mapping.Column (imageService)] "}}

Was könnte das Problem verursachen? Gibt es einen Fehler in der Art, wie ich Hibernate Mapping verwende?

+2

Exception sagt buchstäblich, dass es das ImageService-Feld der Entity "ReceivingInspectionImage" nicht als gültige Datenbankspalte erkennt. Warum injizieren Sie eine EJB in eine Entität? – BalusC

Antwort

3

Das Problem hier liegt

@EJB 
private ImageService imageService; 

Sie sollten nicht Service innerhalb Entity injizieren, wird Hibernate versuchen, es zu einer Spalte zu kartieren.

DAO Schicht sollte nicht von Entity aufgerufen werden, erstellen Sie einen Dienst für die Interaktion mit DAO.

Verwandte Themen