Hibernate脏检查异常

时间:2013-12-02 07:49:51

标签: hibernate

当修改对象没有脏检查异常时休眠

public class Test {
            public static void main(String[] args) {
             Configuration cfg=new Configuration();
             cfg=cfg.configure();
             SessionFactory sf=cfg.buildSessionFactory();
             Session ss=sf.openSession();
             Customer cc=new Customer("hai","hai@gmail.com");
             Customer person = (Customer)ss.get(Customer.class, new Integer(1));
             System.out.println(person.getEmail());
             //when modify then i didn't got dirtycheckexception
             person.setEmail("kkk");
             Transaction tx=ss.beginTransaction();
             tx.commit();
             ss.flush();
             Session ss1=sf.openSession();

修改电子邮件时我没有得到hibernateexception

2 个答案:

答案 0 :(得分:0)

您需要执行ss.update(person)告诉Hibernate在提交事务时对数据库执行更新。
在提交时,执行脏检查以检查需要更新哪些属性;更改bean属性时不执行脏检查(这就是为什么没有得到“脏检查”异常的原因)

答案 1 :(得分:0)

从我的不足看,所有数据库谈话都应该只在交易中进行。但是在您的代码中,您只在交易甚至不需要/使用的交易结束时打开交易。 我在运行代码时遇到错误。如果我在这里错了,请纠正我。

您正在修改对象的状态,但不会发布数据库更新。在这种情况下,不会执行脏检查。