我有一个具有特定列的类,比如说
Class A
{
private String A;
private String B;
private String C;
// Getter Setter of respectives
}
现在发生的事情我的列 A 和列 B 列 C 的值变化相同。所以我做了类似下面的事情
A a = new A();
a.setA(..);
a.setB(..);
for(i=0;i<length;i++){
a.setC(..);
getHibernateTemplate.saveOrUpdate(a);
// or something like this
// A a1 = new A();
// a1 = a;
// a1. setC(..);
// getHibernateTemplate.saveOrUpdate(a1);
}
我的问题是它不存储记录的长度数量,它只更新那条记录。
我知道hibernate将其作为持久对象访问的原因,即使我更改了值并再次保存它也会更新现有记录,并且可以通过每次都使用新对象并将其设置为所有值来解决。但我不想要它,有没有办法告诉hibernate保存该记录而不是更新?
答案 0 :(得分:2)
您尚未描述实际的实体详细信息。如果要使用相同的值保存实体,请将identifier属性设置为null
。
来自文档 -
<强> saveOrUpdate()方法强>
saveOrUpdateAll()
[如果有效,可以针对您的其他query ]
尝试此操作 编辑:这是我的疏忽,我没有仔细检查您的代码。
您已在for循环外定义了对象A
,因此在每次迭代中都会更新相同的对象。试试下面的代码,可能会有帮助。
for(i=0;i<length;i++){
A a = new A(); //-- Create new object for each iteration
a.setA(..);
a.setB(..);
a.setC(..);
getHibernateTemplate.saveOrUpdate(a);
}
答案 1 :(得分:1)
是。请save(a)
而不是saveOrUpdate(a)
getHibernateTemplate.save(a); //each time a new object saves.