Exception in thread "main" org.hibernate.TransactionException: commit failed

今天在學習Hibernate緩存機制時一直報錯:

Exception in thread "main" org.hibernate.TransactionException: commit failed
	at org.hibernate.engine.transaction.spi.AbstractTransactionImpl.commit(AbstractTransactionImpl.java:187)
	at com.mao.secondCache.NewManager.secondCache(NewManager.java:28)
	at com.mao.secondCache.NewManager.main(NewManager.java:13)
Caused by: org.hibernate.TransactionException: unable to commit against JDBC connection
	at org.hibernate.engine.transaction.internal.jdbc.JdbcTransaction.doCommit(JdbcTransaction.java:116)
	at org.hibernate.engine.transaction.spi.AbstractTransactionImpl.commit(AbstractTransactionImpl.java:180)
	... 2 more
Caused by: java.sql.SQLException: You can't operate on a closed Connection!!!
	at com.mchange.v2.sql.SqlUtils.toSQLException(SqlUtils.java:118)
	at com.mchange.v2.sql.SqlUtils.toSQLException(SqlUtils.java:77)
	at com.mchange.v2.c3p0.impl.NewProxyConnection.commit(NewProxyConnection.java:1290)
	at org.hibernate.engine.transaction.internal.jdbc.JdbcTransaction.doCommit(JdbcTransaction.java:112)
	... 3 more
Caused by: java.lang.NullPointerException
	at com.mchange.v2.c3p0.impl.NewProxyConnection.commit(NewProxyConnection.java:1284)
	... 4 more

又是事務提交失敗,又是不能關閉這個連接,去網上查了好多沒解決,最後發現:

Session session=HibernateUtil.currentSession();
		//開啓事務
		Transaction tx=session.beginTransaction();
		//獲取數據
		List list=session.createQuery("from News news")
				.list();
		//通過id查找數據
		News news =(News) session.load(News.class, 2);
		System.out.println(news.getTitle()+"\t"+news.getContent());
		//關閉Session
		session.close();
		tx.commit();

我竟然是先關閉的Session後提交的事務!session都關閉了還提交個毛啊。解決方案:

先提交事務,再關閉Session。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章