Уникальные предметы в коллекциях Hibernate - PullRequest
2 голосов
/ 18 июня 2010

Я определил коллекцию в Hibernate следующим образом:

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

Создает таблицу сопоставления с столбцами item_id и object_id.

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

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

1 Ответ

0 голосов
/ 18 июня 2010

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

@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

Не существует уникального ограничения. Но я не могу сказать больше, не увидев ваш класс "Object" (это встраиваемый класс, верно?).

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

...