Session session = null;
try {
session = HibernateUtil.getSessionFactory().getCurrentSession();
if(session != null)
{
String updateSql = "Update school Set name= :name Where id= :id";
Query query = session.createQuery(updateSql);
query.setParameter("name ", name );
query.setParameter("id", id);
int updateRows= query.executeUpdate();
}
}
catch (HibernateException e)
{
log.error("Error in updating name i ");
}
此处没有更新的行为1,但更新未在数据库中提交。交易也是承诺的。
Session session = null;
try {
session = HibernateUtil.getSessionFactory().getCurrentSession();
if(session != null)
{
School school = getSchool(id);
school.name (name);
session.update(school);
}
}
catch (HibernateException e)
{
log.error("Error in updating name i ");
}
相反,此代码段在同一位置提交。
第一个查询不是在数据库中提交数据而第二个查询正在工作。我想知道这背后的原因
答案 0 :(得分:0)
我是否正确理解您将事务提交到DB中的问题。
你需要这样做:
public void UpdateSchool (School school ){
Session session = HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();
session.update(school );
session.getTransaction().commit();
}
我还建议您使用JPA。在这种情况下,您根本不需要考虑会话,它会根据您的需要自动打开,关闭和提交会话。