gpt4 book ai didi

hibernate - 从 JPA 持久化上下文中分离实体 (JPA 2.0/Hibernate/EJB 3/J2EE 6)

转载 作者:行者123 更新时间:2023-12-02 22:27:14 25 4
gpt4 key购买 nike

我编写了一个无状态 EJB 方法,允许以“只读”模式获取实体。

执行此操作的方法是使用 EntityManager 获取实体,然后将其分离(使用 JPA 2.0 EntityManager)。

我的代码如下:

@PersistenceContext
private EntityManager entityManager;

public T getEntity(int entityId, Class<T> specificClass, boolean readOnly) throws Exception{
try{
T entity = (T)entityManager.find(specificClass, entityId);
if (readOnly){
entityManager.detach(entity);
}
return entity;
}catch (Exception e){
logger.error("", e);
throw e;
}
}

获取实体工作正常,但对 detach 方法的调用返回以下错误:

GRAVE: javax.ejb.EJBException
at ...
Caused by: java.lang.AbstractMethodError: org.hibernate.ejb.EntityManagerImpl.detach(Ljava/lang/Object;)V
at com.sun.enterprise.container.common.impl.EntityManagerWrapper.detach(EntityManagerWrapper.java:973)
at com.mycomp.dal.MyEJB.getEntity(MyEJB.java:37)

我无法获得更多信息,也不明白问题是什么......

有人可以帮忙吗?

最佳答案

我假设您使用的 JPA 2.0 与 Hibernate 版本不正确,它不实现 JPA 2.0 规范。该异常表明 EntityManagerImpl 没有所需的方法。

我建议将 hibernate 升级到 3.5,这是 JPA 2.0 的实现。

关于hibernate - 从 JPA 持久化上下文中分离实体 (JPA 2.0/Hibernate/EJB 3/J2EE 6),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2538829/

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