gpt4 book ai didi

hibernate - 为什么 Hibernate 的 EntityManager.find() impl 会抛出 EntityNotFoundException?

转载 作者:行者123 更新时间:2023-12-01 01:20:23 24 4
gpt4 key购买 nike

JPA 2.0 javadoc (可能还有规范)说 EntityManager.find() 在未找到实体时返回 null:

the found entity instance or null if the entity does not exist



然而 Hibernate 的 impl 反而抛出 EntityNotFoundException 。为什么?使用 Hibernate 3.6.8 和 hibernate-jpa-2.0-api v1.0.1.Final 观察到

javax.persistence.EntityNotFoundException: Unable to find bar.foo.Entity with id 144487 at org.hibernate.ejb.Ejb3Configuration$Ejb3EntityNotFoundDelegate.handleEntityNotFound(Ejb3Configuration.java:137) at org.hibernate.event.def.DefaultLoadEventListener.returnNarrowedProxy(DefaultLoadEventListener.java:320) at org.hibernate.event.def.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:277) at org.hibernate.event.def.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:152) at org.hibernate.impl.SessionImpl.fireLoad(SessionImpl.java:1090) at org.hibernate.impl.SessionImpl.get(SessionImpl.java:1005) at org.hibernate.impl.SessionImpl.get(SessionImpl.java:998) at org.hibernate.ejb.AbstractEntityManagerImpl.find(AbstractEntityManagerImpl.java:779) at org.hibernate.ejb.AbstractEntityManagerImpl.find(AbstractEntityManagerImpl.java:754)

最佳答案

我在使用 Hibernate 4.1.x 时遇到了同样的问题,想向遇到同样问题的人提供一个指针。在我的例子中,正如前面评论中提到的,它不是实体本身,而是从加载的实体引用的另一个实体。奇怪的是,这个被引用的实体确实存在,但它是在不同的事务/ session 中访问的,这造成了不同。由于我正在使用 spring 编写测试,将 @transactional 从类级别移动到方法的简单更改破坏了整个事情。

关于hibernate - 为什么 Hibernate 的 EntityManager.find() impl 会抛出 EntityNotFoundException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9639552/

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