gpt4 book ai didi

java - UniqueResult() 方法是否在 hibernate 条件查询中返回一个新对象?

转载 作者:行者123 更新时间:2023-11-30 08:05:22 25 4
gpt4 key购买 nike

我需要知道 uniqueResult() 是否返回一个新对象,换句话说,是否在内部生成一个 malloc()?因为当我比较对象的内存地址时我的测试失败了。

sameObjectButRetrievedByHibernate = sess.createCriteria(Object.class)
.add(Restrictions.idEq(someId)).uniqueResult();
...
assertTrue(objetcCreatedByNewAndPersisted == sameObjectButRetrievedByHibernate);

无论对象是否加载到内存中,Hibernate 总是会返回一个副本?

最佳答案

Java 中的对象不是由 malloc 内部创建的,它们存储在已经预先分配的堆内存中。

关于你的问题,如果一个实体实例已经在持久上下文(Hibernate session)中,那么它将被使用,否则将创建一个新的。

因此,您要么在新 session 中读取实体实例,要么在持久化实例后清除当前 session 。

关于java - UniqueResult() 方法是否在 hibernate 条件查询中返回一个新对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35108260/

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