我正在使用JPA,Guice Persist用於我的GAE項目,Restlet用於REST界面。引擎蓋下老Hibernate提供JPA服務。用Guice/GuicePersist注入休眠攔截器
這就像一個魅力,吉斯注入必要的JPA部分進入我的課,例如在RestletServlet
的EntityManager
;
現在我想用一個SessionInterceptor
插入創建/編輯時間戳和當前的活躍用戶到我的實體。在舊項目中,我使用帶有ThreadLocal變量的靜態HibernateUtil
類來存儲會話。在我的新項目中,我想用Guice解決這個問題。 Guice需要在我的SessionInterceptor
中注入EntityManager
,所以我可以從數據庫加載當前活動用戶。
SessionInterceptor
需要在Hibernate上下文中創建,並且不允許在啓動後對其進行配置。因此我創建了一個使用Guice Injector的SessionInterceptorFactory
。在persistence.xml
這個工程(是它醜陋的),我有吉斯注射SessionInterceptor
。
但是當我嘗試此代碼;
[ERROR] 1)爲否javax.persistence.EntityManager執行是 界。 [ERROR]而定位 com.google.inject.Provider [ERROR]
爲 com.ludus.server.hibernate.SessionInterceptor的第一參數。(SessionInterceptor.java:20) [ERROR]而定位com.ludus .server.hibernate.SessionInterceptor
我需要連接(bound
)的JPA(休眠)與吉斯的SessionInterceptor
像我一樣用RestletServlet
,但如何配置?
誰能幫我配置這個Guice?
除此之外,當前SessionInterceptorFactory
是一個'髒的Guice黑客',有沒有一個乾淨的Guice解決方案呢?
Hello Tim,與Guice堅持在createInjector中使用JpaPersistModule並在persistence.xml(https://github.com/google/guice/wiki/JPA)中指定JPA/Hibernate配置。我將不得不檢查這是如何完成的代碼... –