JPA @Jointable не создает столбец для идентификатора - PullRequest
0 голосов
/ 20 марта 2012

Я работаю над JBoss AS 7, используя JPA, чтобы получить список Bean-компонентов в Entity-Bean следующим образом:

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

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

Таблица для объединения двух таблиц создается, но несодержит идентификатор, который приводит к тому, что JPA создает ограничение уникальности для одного из столбцов (SECTION_ID).Что на самом деле не то, что я хочу, потому что один раздел может иметь более одного компонента.Один компонент можно использовать и в нескольких разделах.

Я уже пробовал

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

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

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

1 Ответ

2 голосов
/ 20 марта 2012

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

@ManyToOne
private Component component;

Согласно вашему описанию, вам необходимо отношение @ManyToMany:

@ManyToMany
private List<Component> components;
...