gpt4 book ai didi

java - 添加到集合时 PreUpdate 未触发

转载 作者:行者123 更新时间:2023-12-02 02:08:45 27 4
gpt4 key购买 nike

我有一个 JPA 带注释的类,其中包含一个像这样的集合:

@Entity
public class Employee {
@Id
private int id;
@Basic
private String name;
@OneToMany
@JoinTable(name = "ORG", joinColumns = @JoinColumn(name="MINION"),
inverseJoinColumns = @JoinColumn(name="EMP"))
private List<Employee> minions = new ArrayList<Employee>();

@PreUpdate
public void preUpdate(){ ... }
}

我看到的是,如果我有一个托管的 Employee 实体,并且我将 preUpdate 添加到它的 Minions 集合中。方法没有被调用。数据库中的映射表中添加了一个新行,因此我知道更新正在进行。如果我直接更改员工的属性(例如姓名),则 preUpdate提交事务时按预期触发。

有没有办法在修改映射集合时触发 PreUpdate?或者是否有其他技术或 Hibernate 特定注释来检测何时发生这种情况?

最佳答案

@PreUpdate 事件在 database UPDATE operation 之前触发为相关实体执行。

如果您不更新Employee的直接属性,则不会对其表执行UPDATE,因此@PreUpdate监听器永远不会叫。使用由“flush”而不是“update”触发的 @PrePersist 事件,您应该有更好的运气。

关于java - 添加到集合时 PreUpdate 未触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57340594/

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