我有一个包含多个列的表。主键是id
,自动生成。
考虑这段代码,可以多次执行:
session.save(x);
对象x
具有相同的内容,例如,如果我们运行程序两次而没有任何更改。因此,对象在表格中出现两次,具有不同的id
s。
如何修改此代码以避免重复插入?
我考虑使用session.get
,但这需要了解id
。
我还考虑过设置除x
以外的id
的所有字段的条件,但这有点麻烦:有一天我会添加另一列,忘记将其添加到条件中。对此有一个很好的解决方案吗?
答案 0 :(得分:1)
如果你做了
YourObject cachedX = (YourObject)session.merge(x);
cachedX现在将具有生成的Id。显然你必须保留它,你很可能仍然需要提出重复规则。