![在此输入图像描述] [1] SessionFactory sessionFactory = new Configuration()。configure()。buildSessionFactory(); 会话会话= sessionFactory.openSession(); session.beginTransaction(); session.save(学生); session.get
我尝试调用此会话的getTransaction方法时出现此错误,以便我可以提交事务。我是否要纠正此问题
答案 0 :(得分:1)
要提交事务,您需要Transaction
返回的session.beginTransaction();
对象。
按如下方式更改您的代码:
SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory(); Session session = sessionFactory.openSession();
Transaction tx = session.beginTransaction(); //org.hibernate.Transaction
session.save(student);
tx.commit();
<强>更新强>
最好使用正确的try-catch
块:
public boolean saveStudent(Student student)
{
Session session=null;
Transaction tx=null;
SessionFactory sessionFactory = null;
try
{
sessionFactory = new Configuration().configure().buildSessionFactory();
session = sessionFactory.openSession();
tx = session.beginTransaction();
session.save(student);
tx.commit();
return true;
}
catch (Exception e)
{
if(tx!=null && tx.isActive())
{
tx.rollback();//rolebacks the currect active transaction
}
return false;
}
finally
{
if(session!=null && session.isOpen())
{
session.close();
}
if(tx!=null)
{
tx=null;
}
}
}