有人可以解释无状态bean中注入的EntityManager的生命周期吗?如果无状态bean具有与特定PersistenceContext关联的注入的EntityManager,那么第二次使用该bean时该关联会发生什么?
例如,我有以下内容:
@Stateless
public class TimeStepsBean
{
@PersistenceContext(unitName="DynamicDB")
private EntityManager em;
public List<TimeStep> timeSteps = new ArrayList<TimeStep>();
private void init()
{
if (timeSteps.isEmpty())
{
TypedQuery<TimeStep> query = em.createQuery("SELECT t FROM TimeStep t", TimeStep.class);
timeSteps = query.getResultList();.
}
}
public void refreshSteps()
{
init();
em.flush();
em.refresh(timeSteps.get(0));
}
}
当第二次使用bean(第二个事务)时调用refreshSteps时,我得到一个&#34; java.lang.IllegalArgumentException:实体未被管理&#34;。注入了entityManager,因此我假设它始终是当前持久化上下文的一部分。真的吗?
在刷新之前添加em.merge(timeSteps.get(0))仍会生成相同的异常。
答案 0 :(得分:0)
您的timeSteps是一个州。你的课程注释为无国籍。这是对框架的滥用。