J'utilise JPA avec Guice Persist pour mes projets GAE et Restlet pour l'interface REST. Sous le capot bonne vieille Hibernate offre le service JPA.Injecter un intercepteur Hibernate avec Guice/GuicePersist
Cela fonctionne comme un charme, et Guice injecte des pièces nécessaires JPA dans mes classes, par exemple un EntityManager
dans le RestletServlet
;
Maintenant, je veux utiliser un SessionInterceptor
pour insérer créer/modifier et horodatages utilisateurs actifs en cours à mes entités. Dans les anciens projets, j'ai utilisé une classe HibernateUtil
statique avec des variables ThreadLocal pour stocker les sessions. Dans mon nouveau projet, je veux résoudre ce problème avec Guice. Guice doit injecter un EntityManager
dans mon SessionInterceptor
afin que je puisse charger l'utilisateur actif actuel de la base de données.
Le SessionInterceptor
doit être créé dans un contexte Hibernate et il n'est pas autorisé de le configurer après le démarrage. Par conséquent, j'ai créé un SessionInterceptorFactory
qui utilise un injecteur Guice. Dans persistence.xml
Cela fonctionne (oui son laid), j'ai un SessionInterceptor
avec injection Guice.
Mais lorsque je tente ce code;
[ERREUR] 1) Pas de mise en œuvre pour javax.persistence.EntityManager était lié. [ERREUR] tout en localisant com.google.inject.Provider [ERREUR]
pour le 1er paramètre de com.ludus.server.hibernate.SessionInterceptor. (SessionInterceptor.java:20) [ERREUR] tout en localisant com.ludus .server.hibernate.SessionInterceptor
Je dois vous connecter (bound
) la configuration JPA (Hibernate) avec le SessionInterceptor
dans Guice comme je l'ai fait avec le RestletServlet
, mais comment?
Qui peut m'aider avec cette configuration de Guice? En dehors de cela, l'actuel SessionInterceptorFactory
est un 'bidouille de Guice sale', y a-t-il une solution propre de Guice pour cela?
Bonjour Tim, avec Guice Persist vous utilisez JpaPersistModule dans createInjector et spécifiez la configuration JPA/Hibernate dans persistence.xml (https://github.com/google/guice/wiki/JPA). Je vais devoir vérifier comment cela est fait avec du code ... –