0

我的应用程序是多线程的,因此当我使用自然键作为对象时,即使我检查具有所述自然键的对象是否已经存在,也总是有可能在我检查它的存在之后创建对象,当我保存时导致 StaleObjectStateException我的新对象。

我认为这可以使用 Session.merge() 解决,但它仍然给我上述错误

我已经尝试阅读此内容,但还没有找到可以清楚地阐明这一点的内容,大多数示例都在讨论合并检查数据库,但总是在同一函数中显示对象的分离实例,从而混淆了这个问题。

IE

try
{
      session = HibernateUtil.beginTransaction();
      Widget widget = new Widget();
      widget.setData(data);
      widget.setKeyFromData(data);

      //Look in db for widget with same id and return it merged with data in widget or
      /create new object ?
      widget = session.merge(widget);

      session.close();
}
catch(StaleObjectException soe)
{
      e.printStackTrace();
}
4

1 回答 1

0

Use a version in hibernate as merge uses this field to determine recent record.

于 2013-09-27T20:15:10.417 回答