编码
for (int i=0; i<10; i++) {
SomeClass anObj = new SomeClass();
anObj.setField(i);
anObj.setAnotherField("XYZ"+i);
session.save(anObj);
}
session.getTransaction().commit();
运行没有错误,并将 10 行添加到我想要的表中。field是SomeClass的主键。
当我将声明移到外面时:
SomeClass anObj = new SomeClass();
for (int i=0; i<10; i++) {
anObj.setField(i);
anObj.setAnotherField("XYZ"+i);
session.save(anObj);
}
session.getTransaction().commit();
我收到“SomeClass 实例的标识符已更改”的错误消息。
我从中“读到”的是,在将对象保存在数据库中之后,Hibernate 仍在密切关注对象的关键字段——甚至在它应该这样做之后,并且在提交时抱怨它。
我希望一旦我保存它,我应该与代码中的对象单独相处,这没有意义。
我想知道它的背后是什么。
有没有办法—— save()的属性或另一种保存模式来解决这个问题?我不想在循环的每次迭代中都重新声明anObj 。