我在我们的Web应用程序中使用spring和hibernate,我们遇到了一个只在一次执行中插入多行的问题。我们的代码中没有循环在一个用户请求中插入3行。我只是想知道这是否(hibernate检测到一个脏对象)可能是原因。
请帮忙...
谢谢,
答案 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语句。
检查您是否在保存操作之后和事务提交之前修改了对象(关系)。