代码之家  ›  专栏  ›  技术社区  ›  Daniel Taub

如何将hibernate查询从插入更改为提交前更新

  •  0
  • Daniel Taub  · 技术社区  · 5 年前

    我们对hibernate的表演有问题 INSERT 查询而不是 UPDATE .

    我们并行运行两个长期事务,修改同一个表。当事务运行时,我们使用 entityManager.merge() ,但最后只能刷新到数据库,就在提交之前。
    事务处理a 提交成功。几分钟后,什么时候 事务处理b ConstraintViolationException 因为在公共表中有重复的键。
    我们假设当 事务处理b 合并, 还没有承诺 然而 ,实体尚未写入数据库,因此 插入 提交之前 事务处理b 并将实体插入到数据库中,因此此时我们需要在中更改查询 事务处理b 更新。

    有什么建议吗?

    0 回复  |  直到 5 年前
        1
  •  0
  •   Frank Riccobono    5 年前

    由于您使用的是Hibernate而不是纯JPA,因此可以使用 Session#saveOrUpdate . 您可以使用访问Hibernate会话 Session session = entityManager.unwrap(Session.class);