Ich verwende JPA mit Guice Persist für meine GAE-Projekte und Restlet für die REST-Schnittstelle. Unter der Haube liefert der gute alte Hibernate den JPA-Dienst.Inject ein Hibernate Interceptor mit Guice/GuicePersist
Dies wirkt wie ein Zauber, und Guice injiziert notwendig JPA Teile in meinen Klassen, zum Beispiel ein EntityManager
im RestletServlet
; einfügen Erstellen/Bearbeiten der Zeitstempel und aktuelle aktive Benutzer auf meine Entitäten
Jetzt möchte ich eine SessionInterceptor
verwenden. In alten Projekten habe ich eine statische HibernateUtil
Klasse mit ThreadLocal-Variablen verwendet, um die Sitzungen zu speichern. In meinem neuen Projekt möchte ich das mit Guice lösen. Guice muss eine EntityManager
in meinem SessionInterceptor
injizieren, damit ich den aktuellen aktiven Benutzer aus der Datenbank laden kann.
Die SessionInterceptor
muss in einem Hibernate-Kontext erstellt werden, und es ist nicht erlaubt, dies nach dem Start zu konfigurieren. Daher habe ich eine SessionInterceptorFactory
erstellt, die einen Guice Injector verwendet. In persistence.xml
Das funktioniert (ja ihr hässliches), habe ich eine SessionInterceptor
mit Guice Injection.
Aber wenn ich versuche, diesen Code;
[ERROR] 1) war keine Umsetzung für javax.persistence.EntityManager gebunden. [ERROR] während com.google.inject.Provider [ERROR]
für den ersten Parameter von com.ludus.server.hibernate.SessionInterceptor. (SessionInterceptor.java:20) [ERROR] während Ortung com.ludus Ortung .server.hibernate.SessionInterceptor
ich verbinde müssen (bound
) die JPA (Hibernate) Konfiguration mit dem SessionInterceptor
in Guice, wie ich mit dem RestletServlet
tat, aber wie?
Wer kann mir mit dieser Guice-Konfiguration helfen?
Abgesehen davon ist der aktuelle SessionInterceptorFactory
ein "schmutziger Guice Hack", gibt es dafür eine saubere Guice Lösung?
Hallo Tim, mit Guice Persist verwenden Sie JpaPersistModule im createInjector und geben Sie die JPA/Hibernate-Konfiguration in persistence.xml (https://github.com/google/guice/wiki/JPA) an. Ich werde prüfen müssen, wie das mit Code gemacht wird ... –