2010-06-18 2 views
2

Я определил коллекцию в Hibernate, как это:Уникальные предметы в коллекции Hibernate

... 
public class Item { 
    ... 
    @ElementCollection 
    List<Object> relatedObjects; 
} 

Это создает таблицу сопоставления с colums ITEM_ID и object_id.

Проблема в том, что object_id кажется уникальным. Другими словами, я не могу иметь два разных элемента, связанных с одним и тем же объектом. Но это то, чего я хочу.

Я бы хотел, чтобы комбинация item_id и object_id была уникальной. Как мне это сделать?

ответ

0

Это не то, что я испытываю. Для следующего лица:

@Entity 
public class Person implements Serializable { 
    @Id 
    @GeneratedValue 
    private Integer id; 
    private String firstName; 
    private String lastName; 
    @Enumerated(EnumType.STRING) 
    private Gender gender; 

    @ElementCollection 
    private Set<String> nicknames = new HashSet<String>(); 

    private String dept; 

    // getters, setters 
} 

Следующие таблицы получают Создано:

 
create table Person (id integer generated by default as identity, dept varchar(255), firstName varchar(255), gender varchar(255), lastName varchar(255), primary key (id)) 
create table Person_nicknames (Person_id integer not null, nicknames varchar(255)) 
alter table Person_nicknames add constraint FK24F0D97B19ACB65E foreign key (Person_id) references Person 

Там нет ограничения уникальности. Но я не могу сказать больше, не увидев ваш класс «Объект» (это внедряемый класс, верно?).

PS: ElementCollection не может быть ManyToMany, это больше OneToMany.

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