L'accès SessionFactory de Printemps de Démarrage de l'Application
Je suis en train d'essayer d'obtenir l'accès à la session Hibernate usine mais obtiens l'erreur suivante à la ligne mentionnée.
No CurrentSessionContext configured!
code
@Service
@Transactional
public class GenericSearchImpl implements GenericSearch {
@Autowired
private EntityManagerFactory entityManagerFactory;
@Override
@SuppressWarnings("unchecked")
public <T> List<T> search(final Class<T> type, final String[] criteriaList, final int page, final int perPage) {
Session session = getSession();
...
}
public Session getSession() {
final HibernateEntityManagerFactory emFactory = (HibernateEntityManagerFactory) entityManagerFactory;
final SessionFactory sessionFactory = emFactory.getSessionFactory();
return sessionFactory.getCurrentSession(); //ERROR No CurrentSessionContext configured!
//This worked but I understand it to be BAD as spring should be managing open sessions.
// try {
// return sessionFactory.getCurrentSession();
// } catch (Exception e) {
// return sessionFactory.openSession();
// }
}
...
}
Aucune idée pourquoi?
- JPA ne pas utiliser le
CurrentSessionContext
classe. Une configuration qui devrait résoudre votre problème. Il suffit d'ajouter la configuration de la session en cours du contexte et de le laisser point à laorg.springframework.orm.hibernate4.SpringSessionContext
classe. Cependant, pourquoi essayez-vous cela? Pourquoi ne pas utiliser simplement de l'APP? - Je suis en train de faire de ce support un code existant qui est de l'utilisation d'Hibernate Critères. Il finira par être convertie à la JPA. Le reste de l'application est à l'aide de spring-data-jpa, j'ai seulement besoin d'Hibernate SessionFactory temporairement jusqu'à ce qu'il peut être réécrit. Une approche hybride comme ce travail? Pouvez-vous donner un exemple de configuration de CurrentSessionContext comme un printemps haricot de java config?
- this ce que tu veux dire?
- Oui, il est (et comme c'est essentiellement la même question, marqué cette une en double).
- stackoverflow.com/questions/18759978/.... Veuillez consulter cette. Vous montre exactement comment cela peut être fait.
- J'ai suivi le tutoriel mais encore obtenir
No CurrentSessionContext configured!
- Juste fait une mise à jour sur ce, il manque un élément crucial de la configuration de la propriété.
Vous devez vous connecter pour publier un commentaire.
Dans le fichier de propriétés,
en classe de configuration
Alors vous pouvez autowire
Nous faisons ce que le Printemps de démarrage n'est pas automatique configurer hibernate sessinoFactory.
Mise à jour: de Printemps 4.3.12 et Hibernate 5.2, au-dessus de l'API Hibernate solution est amorti en faveur des génériques de l'API JPA solution EntityManagerFactory.
Ici est certains détails à l'exemple de la doc avec des exemples sur la EntityManagerFactory.
Vous pouvez accéder à SessionFactory avec entityManagerFactory déballer méthode au lieu de HibernateJpaSessionFactoryBean
HibernateJpaSessionFactoryBean est obsolète au Printemps de Démarrage 1.5.8