【问题标题】:Reattach an object in Hibernate without issuing a SQL statement?在不发出 SQL 语句的情况下重新附加 Hibernate 中的对象?
【发布时间】:2014-10-16 22:07:46
【问题描述】:

如何将分离的对象重新附加到休眠会话。自上次与(不同的)会话关联以来,该对象没有更改,因此我不希望 Hibernate 发出 UPDATE 或其他 SQL 语句。

【问题讨论】:

  • 也许这会有所帮助:stackoverflow.com/questions/2730388/…
  • @Multisync 谢谢。我看到了那个线程,但我没有看到评论“我认为 merge() 命中数据库,我希望避免这种情况。请注意 session.lock(detached_object, LockMode.NONE) 根本没有命中数据库(如果重新连接后不要更改它)” ...我将使用 LockMode.NONE 测试锁并报告发生的情况。
  • @Multisync 是的,这行得通。它也适用于带有 LockMode.NONE 的较新/未弃用的 LockRequest。
  • 太好了,我还不知道。

标签: java hibernate


【解决方案1】:
parent = new Parent();
parent.setName("NewParent");
Session session = util.getSession();
Transaction trans = session.beginTransaction();
LockRequest r = session.buildLockRequest(LockOptions.NONE);
r.lock(detachedChild);
parent.setChild(detachedChild);
session.save(parent);
trans.commit();
session.flush();
session.close();

【讨论】:

    猜你喜欢
    • 2016-11-05
    • 1970-01-01
    • 1970-01-01
    • 2016-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-15
    相关资源
    最近更新 更多