我有一个名为 Member
的类,它与其他类有一些 @OneToMany
关系。我只能插入一个具有空 OneToMany
关系的 Member
。插入第二个 Member
后,我收到以下异常。
ERROR: Duplicate entry '' for key 'UK_7pn834d04yft1rkvpqf0viuyc'
代码
@Entity
public class Member {
@Id
@Column(name = "username", nullable = false, unique = true)
private String email;
@OneToMany(mappedBy = "friend")
private Set<Friendship> friends;
....
要插入成员
,我向其中添加空 friend 集。我怀疑这一点,并假设需要具有 ZeroToMany
关系,但在 Hibernate documentation 中找不到其注释.
更新
Member member = new Member(email, new HashSet<Friendship>());
构造函数
public Member(String email, Set<Friendship> friends) {
super();
this.email = email;
this.friends = friends;
}
转字符串
member:Member [<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="94f1f9f5fdf8a9fef5f7ffbaf9fbfbe6f1a5d4fbe1e0f8fbfbffbaf7fbf9" rel="noreferrer noopener nofollow">[email protected]</a> , friends=[]]
控制台
insert
into
Member
(username)
values
(?)
最佳答案
不存在 ZeroToMany 关系。那是不存在的,也没有意义。您无法将 0 个实体与多个实体连接。 你应该在这里使用@OneToMany关系,并且你应该初始化 friend 集合
private Set<Friendship> friends = new HashSet<Friendship>();
如果您没有在此处未显示的某些构造函数中执行此操作。
我建议打开 show_sql hibernate 属性,以便您可以了解有关问题的更多详细信息。
关于java - 如何在 Hibernate 中建立零对多关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31622887/