org.hibernate.HibernateException: get is not valid without active transaction

29,147

Solution 1

Add

Transaction tx = session.beginTransaction(); //This statement will initiate the transaction

just before your CallInfo ci = (CallInfo) session.get(CallInfo.class, ucid);

and at the end of your transaction commit the changes by calling..

tx.commit();

Solution 2

Another solution is to use openSession() instead of getCurrentSession(). Then transactions can be used only when required for updating queries.

Session session = HibernateUtil.getSessionFactory().openSession();
CallInfo ci = (CallInfo) session.get(CallInfo.class, ucid);
Share:
29,147
VextoR
Author by

VextoR

Updated on July 05, 2022

Comments

  • VextoR
    VextoR almost 2 years

    I'm new to Hibernate.

    • Automatically created hibernate.cfg.xml (Netbeans wizard)
    • Automatically created HibernateUtil.java
    • Automatically created POJO class with annotations

    Trying to get object from database but getting error:

    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)
    

    getting an object:

    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>