Spring 使用JPA实体侦听器持久化JPA实体
我在JPA EntityListener中有以下方法:Spring 使用JPA实体侦听器持久化JPA实体,spring,activerecord,jpa,transactions,entitylisteners,Spring,Activerecord,Jpa,Transactions,Entitylisteners,我在JPA EntityListener中有以下方法: @PostPersist void onPostPersist(Pli pli) { EvenementPli event = new EvenementPli(); event.setPli(pli); event.setDateCreation(new Date()); event.setDateEvenement(new Date()); even
@PostPersist
void onPostPersist(Pli pli) {
EvenementPli event = new EvenementPli();
event.setPli(pli);
event.setDateCreation(new Date());
event.setDateEvenement(new Date());
event.setType(TypeEvenement.creation);
event.setMessage("Création d'un pli");
event.persist();
}
基本上,我试图创建一个事件,每次保存Pli
实体的实例时,都要保存EvenementPli
的实例
问题在于,在event.persist()之前的时间代码>被称为Pli行不在数据库中,这导致Mysql抱怨约束
有人能帮忙吗?合适的解决方案是重新设计应用程序,使持久化EvenementPli发生在其他实体的@PostPersist回调方法之外的其他地方。根据JPA 2.0规范,此类操作不保证在生命周期回调方法中工作:
通常,便携式应用程序的生命周期方法不应
调用EntityManager或查询操作,访问其他实体
实例,或修改同一持久性中的关系
上下文
谢谢Mikko。我不知道规范的这一方面。我将不得不回到aspectJ。。。