Exception in thread "main" org.hibernate.TransactionException: Transaction not successfully started
package com.demo.hibernate.dao;
import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;
import com.demo.hibernate.beans.User;
import com.demo.hibernate.util.HibernateSessionFactory;
public class UserDAO {
public User getUser(String username) throws HibernateException {
Session session = null;
Transaction tx = null;
User user = null;
try {
session = HibernateSessionFactory.currentSession();
tx = session.beginTransaction();
Query query = session.createQuery("from User where username=?");
query.setString(0, username.trim());
user = (User) query.uniqueResult();
query = null;
tx.commit();
} catch (HibernateException e) {
if (tx != null) {
tx.rollback();
}
throw e;
} finally {
// if (tx != null) {
// tx.rollback();
// }
}
return user;
}
}
如上面注释掉的代码,本来这句判断应该放在Exception 中处理的,在一些教程中却放入了finally 中,显然是不合理的,因为,你的tx只要提交成功的话,是不会为NULL的,那必然会执行回滚,便会造成错误:Exception in thread "main" org.hibernate.TransactionException: Transaction not successfully started
自己的理解,觉得不对的话,希望能提出意见