Java - 为什么hibernate检测到脏对象虽然已经保存了?

时间:2014-07-09 08:45:28

标签: java spring hibernate


我在我们的Web应用程序中使用spring和hibernate,我们遇到了一个只在一次执行中插入多行的问题。我们的代码中没有循环在一个用户请求中插入3行。我只是想知道这是否(hibernate检测到一个脏对象)可能是原因。
请帮忙...
谢谢,

1 个答案:

答案 0 :(得分:1)

  

打开会话时,对象刚刚保存在或中   从数据库中检索。此状态称为持久性。中   这个状态Hibernate管理对象并保存您的更改,如果您   提交他们。下面你可以看到一个例子。一辆车被保存并且名字   之后改变了。由于汽车处于持久状态,新名称   将被保存。

     

Session session = HibernateSessionFactory.currentSession();
  tx = session.beginTransaction();
  session.save(car);
  car.setName(“Peugeot”);
  tx.commit();

     

以下代码按ID加载汽车并更改名称。没有   session.update涉及。 session.get加载的每个对象,   session.load或查询处于持久状态。它存储在   会话的持久化上下文。调用tx.commit()时   Hibernate将刷新持久化上下文,所有尚未编写   执行insert,update和delete语句。

检查您是否在保存操作之后和事务提交之前修改了对象(关系)。