当修改对象没有脏检查异常时休眠
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
答案 0 :(得分:0)
您需要执行ss.update(person)
告诉Hibernate在提交事务时对数据库执行更新。
在提交时,执行脏检查以检查需要更新哪些属性;更改bean属性时不执行脏检查(这就是为什么没有得到“脏检查”异常的原因)
答案 1 :(得分:0)
从我的不足看,所有数据库谈话都应该只在交易中进行。但是在您的代码中,您只在交易甚至不需要/使用的交易结束时打开交易。 我在运行代码时遇到错误。如果我在这里错了,请纠正我。
您正在修改对象的状态,但不会发布数据库更新。在这种情况下,不会执行脏检查。