【发布时间】:2009-11-23 21:59:41
【问题描述】:
我有一个 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 实体并且我添加到它的 minions 集合中,则不会调用 preUpdate 方法。数据库中的映射表中添加了一个新行,因此我知道更新正在进行中。如果我直接更改 Employee 上的属性,例如姓名,那么preUpdate 会在事务提交时按预期触发。
有没有办法让 PreUpdate 在映射集合被修改时触发?或者是否有其他技术或 Hibernate 特定注释来检测何时发生这种情况?
【问题讨论】:
-
使用@Version - 见stackoverflow.com/a/17073342/178526