![](/img/trans.png)
[英]EntityManager not injected in Stateless Session Bean with @PersistenceContext
[英]Injected EntityManager's scope/lifecycle in a Stateless bean
有人可以解釋無狀態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時,我得到一個“ java.lang.IllegalArgumentException:實體不受管理”。 注入了entityManager,因此我假設它始終是當前持久性上下文的一部分。 真的嗎?
在刷新之前添加em.merge(timeSteps.get(0))仍然會生成相同的異常。
您的timeSteps是一種狀態。 您的班級被注釋為無狀態。 這是對框架的濫用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.