使用 SessionFactory 配置 Hibernate 4.3 以使用 @PrePersist
Posted
技术标签:
【中文标题】使用 SessionFactory 配置 Hibernate 4.3 以使用 @PrePersist【英文标题】:Configure Hibernate 4.3 with SessionFactory to use @PrePersist 【发布时间】:2014-07-28 14:20:57 【问题描述】:我正在尝试通过此博客步骤来完成。
http://leakfromjavaheap.blogspot.com.es/2013/08/prepersist-and-preupdate-not-working.html
但是从 Hibernate 4.3 开始,hibernate-entitymanager.jar 中的 events 包被移除了。
另一方面,我一直在阅读有关拦截器和事件的信息。 http://docs.jboss.org/hibernate/orm/4.3/manual/en-US/html_single/#events
这只是实现@PrePersist 行为的两种方法吗?或者可以将@EntityListeners 注释与 SessionFactory 一起使用?虽然我更喜欢赢得 @PrePersist 注释兼容性。
提前谢谢你。
【问题讨论】:
嗨 Dani,我也在努力解决同样的问题。你有没有发现关于 jpa 回调处理程序的任何东西? 嗨 dheerajarora,这种方式没什么可做的,@PrePersist 只是与 EntityManager 兼容。为此,我不得不手动处理事务。问候。 【参考方案1】:在 Hibernate 4 中,您可以使用 Integrator spi 方法。
虽然 hibernate 团队建议使用 JPA EntityManager,但有时您只想继续使用带有 JPA 注释的旧 SessionFactory。
-
包含 org.hibernate:hibernate-entitymanager 作为依赖项(假设你使用的是 maven,pom sn-p 如下):
创建休眠集成器注册文件/META-INF/services/org.hibernate.integrator.spi.Integrator 并通过粘贴以下内容注册 JpaIntegrator 以启用 JPA 事件注释:
org.hibernate 休眠实体管理器4.*版本>依赖>
org.hibernate.jpa.event.spi.JpaIntegrator
参考: arkuarku.wordpress.com/2014/10/23/spring-hibernate4-enable-jpa-prepersistpreupdate-annotation-using-sessionfactroy/ 见:https://docs.oracle.com/javase/tutorial/sound/SPI-intro.htmlhttp://in.relation.to/2012/01/09/event-listener-registration/
【讨论】:
链接到外部站点将使此答案在链接断开后立即过时。是否有可能在这里描述这种方法?仅将链接保留在此处作为额外参考。 @langlan4744:我刚刚用 Hibernate 4.2 测试了这个,而不是把 org.hibernate.jpa.event.spi.JpaIntegrator 放在文件中,你应该把 org.hibernate.ejb.event.JpaIntegrator 放在. 这个解决方案效果很好!谢谢!! 这也适用于hibernate 5。还要确保导入的hibernate-entitymanager
版本与您的hibernate-core
版本相同,以避免出现神秘错误!以上是关于使用 SessionFactory 配置 Hibernate 4.3 以使用 @PrePersist的主要内容,如果未能解决你的问题,请参考以下文章
使用 SessionFactory 配置 Hibernate 4.3 以使用 @PrePersist
配置自定义 HibernateItemWriter 时获取“必须提供 HibernateOperations 或 SessionFactory”