Hibernate SessionFactory getCurrentSession ist nicht gültig ohne aktive Transaktion
Stehe ich vor einem problem in den Ruhezustand versetzt werden. Hier ist der code.
Configuration cfg = new Configuration().configure();
SessionFactory factory = cfg.buildSessionFactory();
Session session = factory.openSession();
Transaction trans = session.beginTransaction();
trans.begin();
Session session2 = factory.getCurrentSession();
System.out.println(session2.isConnected());
trans.commit();
Und in meine cfg-Datei
<session-factory>
<property name="hibernate.connection.driver_class">com.microsoft.sqlserver.jdbc.SQLServerDriver</property>
<property name="hibernate.connection.url">jdbc:sqlserver://localhost:1433</property>
<property name="hibernate.connection.username">username</property>
<property name="connection.password">password</property>
<property name="connection.pool_size">5</property>
<property name="hibernate.dialect">org.hibernate.dialect.SQLServerDialect</property>
<property name="hibernate.current_session_context_class">thread</property>
<property name="show_sql">true</property>
<property name="hbm2ddl.auto">false</property>
<mapping resource="Test.hbm.xml"/>
</session-factory>
wenn ich die Anwendung ausführen, mit obigen code, es gibt mir eine Ausnahme, nämlich "org.hibernate.HibernateException: isConnected ist nicht gültig ohne aktive Transaktion"
Ich weiß nicht, was das Verhalten seiner Durchführung intern. Jede Idee ist bitte.
Du musst angemeldet sein, um einen Kommentar abzugeben.
wenn Sie einen Blick auf die Java-doc von SessionFactory.html#getCurrentSession
Damit Ihre
session
undsession2
sind zwei verschiedenen Sitzungen. So haben Sie, um die Transaktion zu starten aufsession2
ZugangisConnected()
.Allerdings, wenn Sie verwendet werden
getCurrentSession()
abrufen, die erste Sitzung, in der dann zweiten malgetCurrentSession()
werden Sie wieder die gleiche Instanz.