我在应用程序中使用Spring Data Rest,发现一些不一致的行为。
我有一个类似的父实体
(echo trust &echo 5 &echo y &echo quit) | gpg --command-fd 0 --edit-key your@email.com
还有一个带有父母参考的孩子
public class Parent {
@OneToMany(mappedBy = "parent", targetEntity = Child.class, cascade = CascadeType.ALL, orphanRemoval = true)
private List<Child> children;
}
当我做parentRepository.save(Parent.builder()。build())时,我得到https://hibernate.atlassian.net/browse/HHH-9940
但是当我这样做
@ManyToOne
@JoinColumn(name = "PARENT_ID", referencedColumnName = "ID")
Parent parent
然后我同时收到一个
parentRepository.save(Parent.builder.children(Collections.emptyList()).build())
和一个
@PostPersist
public void onCreate(Object entity) {
...
}
事件破坏了我的域逻辑。
我被解决这个问题的困扰...我做错什么了吗?为什么存储一个带有空子列表的父级会发送父对象的create和update事件?
编辑:我在两个侦听器中都收到相同的对象(父对象)。日志中出现的唯一查询是INSERT,没有更新痕迹。就像将INSERT插入db触发了额外的幻像PostUpdate