gpt4 book ai didi

java - Hibernate 4.2.2 在插入 @OneToMany 集合时不验证实体

转载 作者:行者123 更新时间:2023-12-01 13:42:41 25 4
gpt4 key购买 nike

我有一个父实体与其子实体具有 OneToMany 关联:

Parent {
@OneToMany(cascade = CascadeType.ALL, orphanRemoval = true, mappedBy = "parent", fetch = FetchType.EAGER)
@Size(min = 0, max = 4)
List<Child> children = new ArrayList<Child>();

@Transactional
public void addChild(Child child) {
child.setParent(this);
children.add(child);
}
}

当我调用 addChild() 方法时,Hibernate 不会验证子集合 @Size 约束并“按原样”保留子集合,这会导致数据库中的实体无效。

为什么 Hibernate 不验证父实体?

最佳答案

Hibernate 会触发子实体的 INSERT,但不会触发父实体的 UPDATE。我调试了 Hibernate 源代码并发现 org/hibernate/event/internal/DefaultFlushEntityEventListener.java:isUpdateNecessary()返回false在上述情况下。看起来这是一个必须修复的错误。

一种可能的解决方案是进行“虚假”更改,这会弄脏实体并触发验证过程。

关于java - Hibernate 4.2.2 在插入 @OneToMany 集合时不验证实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20585781/

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