如何联系管理该实体的实体经理。我的意思是;假设我在sessionBean中有一个实体引用,我怎么能得到这个实体的entityManager呢? 我已经尝试过(plz参见getEntityManagerOfEntity()方法)包含em的方法;但它不起作用。
THX 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);
答案 0 :(得分:1)
您无法使用JPA API从实体回溯EntityManager
,即使它仍处于管理状态。
如果您在bean中引用了不同的EM并且管理了实体,那么您可以做的是通过调用em.contains(entity)
来检查正确的EM。
在大多数情况下,知道哪个EM最初获取了一个实体并不是很重要,因为您可以将实体合并到任何持久化上下文中并继续使用它。