我在 Hibernate 中定义了一个集合,如下所示:
...
public class Item {
...
@ElementCollection
List<Object> relatedObjects;
}
它创建一个包含列 item_id 和 object_id 的映射表。
问题是 object_id 似乎是唯一的。换句话说,我不能让两个不同的项目与同一个对象相关。但这就是我想要的。
我希望 item_id 和 object_id 的组合是唯一的。我该怎么做?
最佳答案
这不是我遇到的情况。对于以下实体:
@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
。
关于java - Hibernate 集合中的独特项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3067841/