休眠:如果还没有在表中保存

时间:2013-02-20 21:10:15

标签: hibernate

我有一个包含多个列的表。主键是id,自动生成。

考虑这段代码,可以多次执行:

  session.save(x);

对象x具有相同的内容,例如,如果我们运行程序两次而没有任何更改。因此,对象在表格中出现两次,具有不同的id s。

如何修改此代码以避免重复插入?

我考虑使用session.get,但这需要了解id

我还考虑过设置除x以外的id的所有字段的条件,但这有点麻烦:有一天我会添加另一列,忘记将其添加到条件中。对此有一个很好的解决方案吗?

1 个答案:

答案 0 :(得分:1)

如果你做了

YourObject cachedX = (YourObject)session.merge(x);

cachedX现在将具有生成的Id。显然你必须保留它,你很可能仍然需要提出重复规则。