我目前正在爲我的應用創建一些測試。 我遇到了需要涉及JPA的@PrePersist功能的問題。 不幸的是,這些攔截器沒有被解僱,而是持續,更新(等),我發現使用Hibernate的Session API這個功能不起作用。這裏出現我的問題。JPA/Hibernate問題(@PrePersist,Session API澄清)
在應用程序中使用Session API的主要證明是什麼,並且是否有機會直接檢索EntityManager以觸發觸發器?
我非常感謝在這個題目任何提示和建議,
我目前正在爲我的應用創建一些測試。 我遇到了需要涉及JPA的@PrePersist功能的問題。 不幸的是,這些攔截器沒有被解僱,而是持續,更新(等),我發現使用Hibernate的Session API這個功能不起作用。這裏出現我的問題。JPA/Hibernate問題(@PrePersist,Session API澄清)
在應用程序中使用Session API的主要證明是什麼,並且是否有機會直接檢索EntityManager以觸發觸發器?
我非常感謝在這個題目任何提示和建議,
什麼是主要證明的Session API是應用程序
簡單化使用,EntityManager的API是一個「空殼」圍繞最初的Session API。但我想你想要另一個答案:-)我唯一能給的其他答案是檢查源代碼。或者,如果您沒有源代碼,則需要更改日誌記錄配置。將它設置爲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
似乎在我工作的應用程序中沒有使用任何會話(沒有使用對象會話,直接注入EntityManager),而且據我所知,該應用程序遵循JPA,並避免任何框架具體的解決方案,當然如果EJB不需要在後臺使用會話對象,它不會自動處理它 – redbull 2011-02-02 09:30:02