【发布时间】:2015-12-16 17:27:51
【问题描述】:
我有一个这样的实体:
@EntityListeners({MyEntityListener.class})
public class MyEntity {
@OneToMany(mappedBy = "myentity", cascade = CascadeType.ALL, orphanRemoval = true)
private Set<MyDependentEntity> dependents;
//other attributes that are mapped to columns in MyEntity table
}
以及依赖实体:
public class MyDependentEntity {
@ManyToOne(optional = false, cascade = {CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REFRESH})
@JoinColumn(name = "myentity_id")
private MyEntity myEntity;
}
还有 MyEntityListener:
public class MyEntityListener {
@PostPersist
public void postPersist(MyEntity entity) {
logStuff(entity);
}
}
以及启动它的这段代码:
MyDependentEntity dependent = new MyDependentEntity();
dependent.set...(...);
dependent.set...(...);
MyEntity entity = new MyEntity();
entity.set...(...);
entity.set...(...);
entity.set...(...);
entity.setDependents(Collections.singleton(dependent))
dependent.setEntity(entity);
entityManager.merge(entity);
它起作用并且实体监听器被触发。 问题是:依赖属性为空(所有其他属性都正确填充)。
数据库具有正确的数据(实体和相应的依赖项)。 调试我可以看到持久化的实体在属性中具有依赖项。但是当它进入实体监听器时,依赖属性为空。
有什么方法可以在实体监听器中填充依赖属性?我需要它,以便处理刚刚保存的实体。
【问题讨论】:
标签: hibernate jpa jakarta-ee