gpt4 book ai didi

java - hibernate 。一些相同列表的非空约束

转载 作者:太空宇宙 更新时间:2023-11-04 10:34:27 25 4
gpt4 key购买 nike

我有两个简单的实体(省略 getter/setter):

@Entity
public class Paper {

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
}

@Entity
public class Writer {

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;

@OneToMany
private List<Paper> book1 = new ArrayList<>();

@OneToMany
private List<Paper> book2 = new ArrayList<>();
}

Hibernate 创建一个包含 3 列(writer_id、book1_id、book2_id)的中间表 writer_paper。但我无法将任何论文添加到书籍中,因为它违反了第二本书的非空约束。我可以以某种方式放弃或规避这个限制吗?谢谢。
更新
我正在尝试将一篇论文添加到第一本书中,如下所示:

Session session = sfbean.getSessionFactory().openSession();
session.beginTransaction();

Writer writer = new Writer();
Paper paper = new Paper();
session.saveOrUpdate(writer);
session.saveOrUpdate(paper);

writer.getBook1().add(paper);
session.saveOrUpdate(writer);

session.getTransaction().commit();
session.close();

错误堆栈跟踪的一部分:
导致:org.postgresql.util.PSQLException:错误:“book2_id”列中的空值违反了 NOT NULL 约束
详细信息:错误的字符串包含 (670, null, 671)。

最佳答案

我找到了一种方法来解决这个问题,即为每个列表创建一个单独的链接表。可以使用每个列表的 @JoinTable(name = "link_table_1") 注释来完成。

关于java - hibernate 。一些相同列表的非空约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49637315/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com