Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
@在Wildfly 8/JPA 2.1中从未触发过预更新_Jpa_Jboss_Wildfly - Fatal编程技术网

@在Wildfly 8/JPA 2.1中从未触发过预更新

@在Wildfly 8/JPA 2.1中从未触发过预更新,jpa,jboss,wildfly,Jpa,Jboss,Wildfly,我正在体验一种奇怪的效果,@PreUpdatehook从不开火。代码: @PrePersist @PreUpdate public void prePersist() { if (getCreated() == null) { setCreated(new Date()); setCreatedBy(LoginHolder.getUser()); } setLastModified(new Date()); setModifiedB

我正在体验一种奇怪的效果,
@PreUpdate
hook从不开火。代码:

@PrePersist
@PreUpdate
public void prePersist() {
    if (getCreated() == null) {
        setCreated(new Date());
        setCreatedBy(LoginHolder.getUser());
    }
    setLastModified(new Date());
    setModifiedBy(LoginHolder.getUser());

}
尽管hibernate记录对我的(现有)实体的更新,但只有@Prepersist在新实体上激发
项目。我遗漏了什么吗?

是的,您遗漏了什么,即向我们展示触发EntityManager操作的代码。很抱歉延迟,感谢您的回复。实体管理器操作是在事务结束时由wildfly隐式执行的,因此显然除了实体实例化和entityManager.persist(o);,我没有其他代码可以显示;。prepersist钩子正确激发,但preupdate方法不会激发,尽管它应该激发,即使我修改了使用entityManager.find()获取的现有对象。那么您在不同会话中使用不同的entityManager执行
persist()
merge()
?还向我们展示如何注入/实例化EntityManager.no,我只使用EntityManager.persist()。当我离开我的事务上下文时,JBoss完成其余的工作。如果稍后在另一个事务中修改数据,则在事务结束时不会触发preUpdate钩子,尽管我可以看到数据库中的数据更改。同样的代码示例在JBoss7中总是有效的,但在Wildfly中却没有,后者提供了更新的Hibernate版本。