java - 如何在 Hibernate 中建立零对多关系

标签 java hibernate hibernate-mapping

我有一个名为 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/

相关文章:

java - 如何在 Android 上使用 swi-prolog

java - 我的 JTable 列的名称未显示

java - 如何在 eclipse 中验证 JTextField?

java - 没有 Hibernate Session 绑定(bind)到线程异常

java - JPA 嵌套映射到没有基表的 View

java - 用java创建 Activity 日历

java - Hibernate 搜索与具有复合 ID 的 IndexEmbedded 属性关联

java - Hibernate 无效的列名

java - 列类型的奇怪 Hibernate 异常

java - 找不到类型 : java. lang.Integer 的 validator