我在JPA EntityListener中有以下方法:
@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();
}
基本上,我试图通过在每次EvenementPli
实体的实例持久化时保持Pli
的实例来创建事件。
麻烦的是,到时间event.persist();
被称为Pli行不在数据库中导致Mysql抱怨约束...
有人可以帮忙吗?
答案 0 :(得分:3)
适当的解决方案是以这样的方式重新设计应用程序,持久化EvenementPli发生在其他地方的@PostPersist回调方法中。根据JPA 2.0规范,这些操作不能保证在生命周期回调方法中起作用:
通常,便携式应用程序的生命周期方法不应该 调用EntityManager或Query操作,访问其他实体 实例,或修改同一持久性内的关系 上下文。