У меня есть аннотированный класс 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 не вызывается. В таблицу сопоставления в БД добавляется новая строка, поэтому я знаю, что происходит обновление. Если я изменяю свойство непосредственно у сотрудника, например имя, то preUpdate срабатывает, как и ожидалось, когда транзакция фиксируется.
Есть ли способ заставить PreUpdate срабатывать при изменении сопоставленной коллекции? Или есть какой-то другой метод или специальная аннотация Hibernate для обнаружения, когда это происходит?