如果存在初始化的子集合,则使用PagingAndSortingRepository.save保存实体会同时产生@ PostUpdate / @ PostCreate事件。

时间:2018-12-21 14:57:43

标签: java jpa spring-data-jpa spring-data spring-data-rest

我在应用程序中使用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

0 个答案:

没有答案