2012-03-20 5 views
0

Я работаю на JBoss AS 7 с использованием JPA, чтобы иметь список Фасоль в Entity-Bean, как это:JPA @Jointable не создает столбец для идентификатора

@Entity 
class section { 
    @Id 
    @GeneratedValue 
    private Long id; 

    @ManyToOne 
    private List<Component> components; 
    // ... 

В таблице присоединиться две таблицы создается, но не содержит Id, что приводит к созданию JPA, создающего уникальное ограничение в одном из столбцов (SECTION_ID). На самом деле это не то, что я хочу, потому что один раздел может иметь более одного компонента. Один компонент может использоваться и в нескольких разделах.

Я уже пытался

@JoinTable(name="SECTION_COMPONENT",  
    joinColumns = { 
@JoinColumn(name="section_id", unique = false)   
}, 
inverseJoinColumns = 
@JoinColumn(name="component", unique = false) 
} 

Я думаю, JPA нужно по крайней мере один уникальный столбец, поэтому он просто добавляет, что до последнего столбца, если иное не указано. Мне было бы неплохо добавить новый столбец «id» для настройки первичного (или уникального) ключа. Но я не знаю, как это сделать.

Большое спасибо за любую помощь

ответ

2

отображения не является правильным: @ManyToOne в вашем случае означает, что у вас есть один компонент, который имеет множество разделов:

@ManyToOne 
private Component component; 

По вашему описанию, вам нужно @ManyToMany Отношения:

@ManyToMany 
private List<Component> components; 
Смежные вопросы