2013-02-14 4 views
2

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

@Entity 
class Item { 
    Long id; 
    String name 
} 

@Entity 
class MyCollection { 
    Long id; 
    String name; 

    @OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL) 
    Set<Item> items; 
} 

Пользователь должен быть в состоянии поставить Item имя «Foo» в `«название „бара“ и в „MyCollection MyCollection“ имя „BAR2“

Джойн таблицы, JPA/Hibernate создает для me, MyCollection_Item имеет 4 индекса, PK (MyCollection_id, Item_id), уникальный индекс (Item_id) и 2 внешних ключа.

Я не хочу, чтобы он создал уникальный индекс на Item_id. Это предотвращает меня от:

MyCollection_id, Item_Id

1, 1

1, 2

2, 1

Я уверен, что этот тип отображения должен быть? Любая помощь будет принята с благодарностью.

+0

Попробуйте использовать manyToMany – BobTheBuilder

ответ

2

OneToMany, когда вы хотите отобразить один объект в много объектов

ManyToMany, когда вы хотите отобразить многие объект в много объектов (как вы пытаетесь сделать здесь)

1

Вам нужно ManyToMany, но вы его отобразили как OneToMany.