gpt4 book ai didi

java - Hibernate:安全地将对象重新附加到 session

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:23:56 26 4
gpt4 key购买 nike

我通过在 map 中存储(可能分离的)对象来维护跨 hibernate session 的对象缓存。当缓存命中时,我使用 Session.contains(object) 测试该对象是否已经是 session 的一部分。如果没有,我用 Session.lock(object, LockMode.NONE) 重新附加它。

问题是,如果之前在 session 中加载了相同的对象,它会抛出 org.hibernate.NonUniqueObjectException。给定一个分离的实例,我看不出有什么办法可以在不访问数据库的情况下提前发现是否会抛出这个异常。

有几个解决方法:

  1. 在每个事务开始时重新附加所有缓存的对象。
  2. 捕获 NonUniqueObjectException 然后调用 session.load(object.class, object.getId());

这些都不像提前检查 session 中的对象类 + id 那样干净。

有什么办法吗?

最佳答案

Session.merge() 应该这样做:

obj = session.merge(obj);

关于java - Hibernate:安全地将对象重新附加到 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2730388/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com