hibernate/JPA中的@PreUpdate和@Prepersist(使用session)

bla*_*sei 34 java hibernate jpa java-ee

我已经打了一个拦截器将修复到现有project.the主要问题是,我一定会喜欢使用@Prepersist,并@PreUpdatePOJO照顾LastModified使用Hibernate与会话实现JPA的领域(INSERT和UPDATE).

原因?:这个更改是必需的,因为需要使用liquibase 1.9.5并且我知道(因为我之前已经面对过)liquibase将时间戳转换为使用默认current_timestamp的日期时间,这对于mysql数据库来说太糟糕了.

所以我需要一种方法来在代码中而不是在数据库中设置这个集合所以我可以安全地将时间戳字段更改为datetime.then liquibase很高兴,我很高兴.

现在似乎那些解释器没有被执行,很少有搜索我发现它适合使用entityManager.目前是不可能的.所以我想知道是否有一个简单的方法解决我的问题,这意味着有@Prepersist@PreUpdate或甚至其他解决方法来设置lastModified仍然使用会话的字段

Pas*_*ent 48

现在似乎那些解释器没有被执行,很少有搜索我发现它适合使用entityManager.

是的,如果您使用SessionAPI ,JPA回调将无效.

所以我想知道我的问题是否有一种简单的方法,这意味着有@PrePersist或@PreUpdate甚至其他解决方法来设置lastModified字段仍然使用session

据我所知,没有简单的方法(如果你使用Spring,MAYBE虽然看过这篇文章).

我对基于Hibernate的解决方案的建议是使用事件(以及一个或多个接口).检查Hibernate和上次修改日期以获取示例.

  • 嗨Pascal,我已经尝试使用hibernate事件监听器,它工作.再次感谢你的帮助.;) (3认同)