【发布时间】:2018-06-05 21:00:11
【问题描述】:
我在父母和孩子之间有一对多的关系。 下面是关系的代码sn-p。
@Entity
@Table(name = "Parent")
public class Parent{
@OneToMany(cascade = CascadeType.ALL,fetch = FetchType.EAGER)
@Fetch(FetchMode.SELECT)
@JoinColumn(name = "parentId",referencedColumnName="parentId")
private Set<Child> child = new HashSet<>();
}
另外,在尝试保存和更新对象之前,我正在使用 @PreUpdate 和 @PrePersist 对实体执行一些审计操作。
@PrePresist 看起来工作得很好。如文档中所述,在我尝试在数据存储中持久保存新对象之前调用它。
我在使用@PreUpdate 时遇到问题。如果父母有多个孩子,当我们尝试向它添加另一个孩子entityManager.merge(parent)。 @PrePresist 被正确调用,因为我们正在插入一个新的子记录,但它也为所有已存在于父级中的子级调用 @PreUpdate 注释方法,尽管任何子对象中都没有任何变化。它不应该为所有孩子调用PreUpdate,因为它们中没有任何更新。
有人知道为什么会这样吗?
提前致谢!
【问题讨论】:
标签: java hibernate jpa hibernate-mapping