繁体   English   中英

我在这里缺少什么(休眠开始事务)

[英]What I am missing here (Hibernate begin transaction)

我有一个测试课:

 class SomeTest {
       public static void main(String args[]){
       Client kom = new Client();
       kom.setId(kom.newID());
       kom.setClient("OldName");
       SessionFactory sessionFactory =  new    Configuration().configure().buildSessionFactory();
       Session session = sessionFactory.openSession();
       session.beginTransaction();
          session.save(kom); // I think insert is here ?
          Query q = session.createSQLQuery(" call change_name(:old, :new) ");
          q.setParameter("old","OldName");
          q.setParameter("new","NewName");
          int result = q.executeUpdate();
          session.getTransaction().commit();
        }
     };

和数据库存储过程change_name进行客户端名称的更新..每次运行测试时,我都有一条带有旧名称的记录? 我希望更新是在同一事务中执行的,并且我永远都不会看到旧名称?

JB Nizet有正确答案。

save()不会插入。 它将对象与会话相关联。 插入查询在下一次刷新时执行。 因此,在调用存储的proc之前,显式调用flush。 –昨天,JB Nizet

还有FlushMode ...我总是设置为。 我调用了许多程序来更改数据库中的数据。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM