我目前正致力于在我的应用上创建一些测试。 我遇到了一个需要涉及JPA的@PrePersist功能的问题。 不幸的是,这些拦截器没有被解雇,而是持久化,更新(等),我发现使用Hibernate的Session API这个功能不起作用。这是我的问题。
在应用程序中使用Session API的主要证据是什么,是否有可能直接检索EntityManager以触发触发器?
我非常感谢有关此主题的任何提示和建议,
答案 0 :(得分:3)
在应用程序中使用Session API的主要证据是什么
过度简化,EntityManager API是原始Session API的“shell”。但我想你想要另一个答案:-)我能给出的唯一其他答案是检查源代码。或者,如果您没有源代码,则需要更改日志记录配置。将它设置为Session类的“trace”,然后你可以确切地看到它被调用的时间。
并且是否有机会直接检索EntityManager以触发触发器?
当然,取决于您使用的应用程序服务器或框架。如果您有“真正的”应用程序服务器,则可以从中检索EM。如果您使用的是独立应用程序,则可以使用EntityManagerFactory创建EntityManager。但在此之前,我会检查Hibernate测试套件中的示例:
此外,如果你不使用JPA API,你仍然可以在Hibernate中拥有事件监听器:
http://docs.jboss.org/hibernate/core/3.6/reference/en-US/html_single/#objectstate-events