2015-12-26 2 views
0

Можно ли настроить аннотации Hibernate для хранения класса компонента в отдельной таблице?таблица аннотации компонентов hibernate

Рассмотрим следующий пример:

@Table(name = "A") 
@Entity 
public class A implements Serializable { 
@Id 
public String id; 

@OneToMany 
@JoinColumn(name="ENTITY_ID", insertable=false, updatable=false) 
@NotFound(action=NotFoundAction.IGNORE) 
private Set<ComponentObj> components; 
.... 
} 

Для таблицы компонентов ...

@Table(name = "C") 
public class ComponentObj implements Serializable { 

@JoinColumn(name="ENTITY_ID") 
public String entity_Id; 

.... 
} 

Когда я начинаю выполнять модульное тестирование с указанными выше аннотаций, я получаю следующее исключение:

Caused by: org.hibernate.AnnotationException: Use of @OneToMany or @ManyToMany targeting an unmapped class: ComponentObj 

Я объявил оба класса как аннотированные классы ...

ответ

1

Я бы посоветовал создать ComponentObj реальную сущность с идентификатором и просто использовать ассоциацию OneToMany.

Возможно использование компонентов, но не так, как вы пробовали.

  • класс компонент должен быть аннотированный с @Embeddable
  • коллекция должна быть аннотированный с @ElementCollection
  • компонент не должен иметь поле ENTITY_ID
  • таблицу для использования должны быть указаны с использованием CollectionTable аннотацию сбор

Полный пример доступен в the javadoc.

+0

Спасибо. Это очень помогло. –

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