作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
想象一下使用 Hibernate 和 JPA 的以下简化代码:
@Entity
class C {
@Id @GeneratedValue public long id;
}
@MappedSuperclass
abstract class A {
@Id @GeneratedValue public long id;
@OneToMany(cascade = CascadeType.ALL)
public List<C> list1;
@OneToMany(cascade = CascadeType.ALL)
public List<C> list2;
}
@Entity
class B extends A { }
使用 PostgreSQL 数据库,这会生成一个包含列的 b_c
表
b_id | list1_id | list2_id
现在,尝试持久化任何 B
会导致以下异常:
org.postgresql.util.PSQLException: FEHLER: NULL-Wert in Spalte „list2_id“ verletzt Not-Null-Constraint
Detail: Fehlgeschlagene Zeile enthält (779, 827, null).
大致翻译成列“list2_id”中的 NULL 值违反了非空约束。内容:(770, 827, null)
为什么会发生这种情况,我该如何避免?
将列表合并为一个列表不是一种选择。使用 Sets 不会改变任何东西。
最佳答案
发生这种情况是因为单向 @OneToMany
协会。您需要先确定您的关联是单向的还是双向的。
如果您的关联是单向的,那么您需要使用 @JoinColumn
修复额外的连接表问题。如果您的关联是双向的,那么您将依赖 @ManyToOne
侧传播所有实体状态更改,使用 mappedBy
在 @OneToMany
上边。您可以找到关于 @OneToMany
的不同方式的很好的解释。协会here .
关于java - 为什么hibernate在一个表中保存两个@OneToMany列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48115993/
我有 json 数据: { "products": [ { "productId" : 0, "productImg" : "../img/product-ph
我是一名优秀的程序员,十分优秀!