【发布时间】:2012-12-11 18:08:30
【问题描述】:
我有三层,即 Action、Service、DAO 层。我已经使用 id 为 123 的休眠从 DB 加载了一个对象(雇员类)。我对雇员对象进行了一些修改。后来,我创建了休眠业务对象并对其进行了一些修改。
Employee e = service.getEmp(123);
e.setName("Ashok");
Order o = new Order
o.setNumber(567);
service.saveOrUpdate(o);
在这种情况下,为什么它试图更新员工对象,即使我没有说要保存它?如何从会话中分离它?我不希望休眠更新员工对象。
【问题讨论】:
-
您的订单类是否包含员工实例,是否设置为预加载?
-
“自然”的方式是不调用
e.setName()。跟踪会话中对象的更改是 Hibernate 运行方式的基本部分。