2

如何联系管理实体的实体经理。我是说; 假设我在 sessionBean 中有一个实体引用,我怎样才能得到这个实体的 entityManager 属于一个?我已经尝试过(请参阅 getEntityManagerOfEntity() 方法)包含 em 的方法;但它不起作用。

谢谢bgrds

@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);
4

1 回答 1

2

您不能EntityManager使用 JPA API 从实体回溯,即使它仍处于托管状态。

如果您在 bean 中有对不同 EM 的引用并且实体是受管理的,那么您可以做的是通过调用来检查正确的 EM em.contains(entity)

在大多数情况下,知道哪个 EM 最初获取了实体并不重要,因为您可以将实体合并到任何持久性上下文中并继续使用它。

于 2013-04-09T11:54:24.140 回答