2016-05-03 2 views
1

Я пытаюсь читать 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:

@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.MappingException: Не удалось определить тип для: my.application.util.ImageService, за столом: ReceivingInspectionImage, для столбцы: [org.hibernate.mapping.Column (imageService)] "}}

Что может вызвать проблему? Есть ли ошибка в том, как я использую сопоставление Hibernate?

+2

Исключение буквально говорит, что он не распознает поле imageService объекта 'ReceivingInspectionImage' как допустимый столбец базы данных. Почему вы вводите EJB в Entity? – BalusC

ответ

3

Проблема заключается здесь

@EJB 
private ImageService imageService; 

Вы не должны вводить услугу в Entity, Hibernate попытается отобразить его в колонну.

DAO Слой не следует вызывать от Entity, создать услугу для взаимодействия с DAO.

Смежные вопросы

 Смежные вопросы