我正在編寫一個簡單的項目,一個用Swing編寫的業務應用程序,使用Hibernate作爲後端。我來自Spring,這讓我輕鬆地使用休眠和事務。無論如何,我設法讓Hibernate工作。昨日,一邊寫一些代碼來刪除DB豆,我得到這個:爲什麼我會得到org.hibernate.HibernateException:沒有配置CurrentSessionContext
org.hibernate.HibernateException: Illegal attempt to associate a collection with two open sessions
缺失的代碼很簡單:
Session sess = HibernateUtil.getSession();
Transaction tx = sess.beginTransaction();
try {
tx.begin();
sess.delete(ims);
} catch (Exception e) {
tx.rollback();
throw e;
}
tx.commit();
sess.flush();
和我HibernateUtil.getSession()
是:
public static Session getSession() throws HibernateException {
Session sess = null;
try {
sess = sessionFactory.getCurrentSession();
} catch (org.hibernate.HibernateException he) {
sess = sessionFactory.openSession();
}
return sess;
}
附加細節:我從來沒有在我的代碼中關閉一個hibernate會話,只是在應用程序關閉時。這是錯的嗎?爲什麼我在刪除(只爲該bean,其他人工作),並且我沒有進行其他操作(插入,查詢,更新)?
我看周圍,我想修改我getSession
方法只是在sessionFactory.getCurrentSessionCall()
,但我得到:org.hibernate.HibernateException: No CurrentSessionContext configured!
Hibernat的conf:
<hibernate-configuration>
<session-factory >
<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/joptel</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">******</property>
<property name="hibernate.connection.pool_size">1</property>
<property name="show_sql">true</property>
<property name="hibernate.hbm2ddl.auto">update</property>
..mappings..
</session-factory>
</hibernate-configuration>
你的hibernate配置文件是怎麼樣的? – Santosh