如何联系管理该实体的实体管理者。我是说;假设我在 sessionBean 中有一个实体引用,我如何获取该实体所属的实体管理器? 我已经尝试过(请参阅 getEntityManagerOfEntity() 方法)包含 em 的方法;但它不起作用。
谢谢 背景
@Stateless(name = "MainManager", mappedName = "MainManager")
@TransactionManagement(TransactionManagementType.CONTAINER)
@Interceptors(value = { PerformanceMonitor.class, ProfileInterceptor.class })
public class MainManagerBean implements MainManager, MainManagerLocal
{
private Logger logger = Logger.getLogger(this.getClass());
@PersistenceContext(unitName = "DSApp")
private EntityManager manager;
@PersistenceContext(unitName = "DSIX")
private EntityManager integrationManager;
@Resource
SessionContext ctx;
public EntityManager getEntityManagerOfEntity(SuperEntity superEntity)
{
if (manager.contains(superEntity))
return manager;
else if (integrationManager.contains(superEntity))
return integrationManager;
return null;
}
public SuperEntity findByPrimaryKey(SuperEntity superEntity)
{
getEntityManagerOfEntity(superEntity).setFlushMode(FlushModeType.COMMIT);
return dao.findByPrimaryKey(getEntityManagerOfEntity(superEntity), superEntity);
最佳答案
您无法使用 JPA API 从实体回溯 EntityManager
,即使它仍处于托管状态。
如果您在 Bean 中引用了不同的 EM 并且实体受到管理,您可以做的是通过调用 em.contains(entity)
检查正确的 EM。
在大多数情况下,知道哪个 EM 最初获取了实体并不重要,因为您可以将该实体合并到任何持久性上下文中并继续使用它。
关于jpa - 如何使用实体类获取entityManager,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15900426/