org.mise en veille prolongée.HibernateException: obtenir n'est pas valide sans transaction active
Je suis nouveau sur mise en veille prolongée.
- Créé automatiquement hibernate.cfg.xml (Netbeans assistant)
- Créé automatiquement HibernateUtil.java
- Automatiquement créé classe POJO avec des annotations
Essayant d'obtenir un objet de base de données, mais l'obtention d'erreur:
Exception in thread "pool-1-thread-1" org.hibernate.HibernateException: get is not valid without active transaction
at org.hibernate.context.ThreadLocalSessionContext$TransactionProtectionWrapper.invoke(ThreadLocalSessionContext.java:297)
obtenir un objet:
Session session = HibernateUtil.getSessionFactory().getCurrentSession();
CallInfo ci = (CallInfo) session.get(CallInfo.class, ucid);
hibernate.cfg.xml
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/sochi_feedback</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">root</property>
<property name="hibernate.show_sql">true</property>
<property name="hibernate.query.factory_class">org.hibernate.hql.classic.ClassicQueryTranslatorFactory</property>
<property name="hibernate.current_session_context_class">thread</property>
Pouvez-vous s'il vous plaît ajouter le code qui appelle la méthode get ()??
Ajouter "Transaction tx = session.beginTransaction();" juste avant cette ligne et à la fin de vos opérations d'appel "tx.commit();"
merci, ça fonctionne
:Je ll ajouter comme une réponse alors...
CallInfo ci = (CallInfo) session.get(CallInfo.class, ucid);
Ajouter "Transaction tx = session.beginTransaction();" juste avant cette ligne et à la fin de vos opérations d'appel "tx.commit();"
merci, ça fonctionne
:Je ll ajouter comme une réponse alors...
OriginalL'auteur VextoR | 2012-03-15
Vous devez vous connecter pour publier un commentaire.
Ajouter
Transaction tx = session.beginTransaction();
//Cette instruction va lancer la transactionjuste avant votre
CallInfo ci = (CallInfo) session.get(CallInfo.class, ucid);
et à la fin de votre transaction valider les modifications apportées par l'appel..
OriginalL'auteur Shashank Kadne
Une autre solution est d'utiliser
openSession()
au lieu degetCurrentSession()
. Ensuite, les opérations peuvent être utilisés que lorsque c'est nécessaire pour la mise à jour des requêtes.J'ai eu le même problème. Mais pourquoi?
OriginalL'auteur Amil Waduwawara
Même après
beginTransaction()
et etcommit()
si vous obtenez toujours leallez à "Démarrer" et la recherche de services et redémarrez le service de base de données
OriginalL'auteur prasad
Avant de réellement commencer la transaction, vous avez besoin pour commencer la session en appelant
session.beginTransaction()
, juste après que vous créez une sessionFactory.OriginalL'auteur Farruh Habibullaev