首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CDI (焊)+ DeltaSpike +变流器

CDI (焊)+ DeltaSpike +变流器
EN

Stack Overflow用户
提问于 2013-12-04 18:49:30
回答 2查看 1.1K关注 0票数 2

我目前正试图让CDI (更准确地说,是Weld)使用JSF 2并进行长时间的对话。我在@ConversationScoped我的支持豆开始对话。我还创建了一个@ConversationScoped实体管理器。遗憾的是,当JSF试图编写@ManyToMany映射字段时,我在后台bean中编辑的实体总是得到一个LazyInitializationException。实体似乎与实体管理器分离。在我的EntityManagerProducer (参见下面)中,方法createEntityManager()并不是抛出的LazyInitializationException,所以我假设实体管理器实际上是会话作用域。但据我所知,我的代码不会生成扩展的持久性上下文(因为我无法理解如何以编程的方式实现这一点)。

据我所知,DeltaSpike还没有提供任何用于处理JSF中长时间运行的会话的功能。有人能建议如何使用Weld + DeltaSpike (最好是在带有焊缝-servlet的Tomcat上)实现与CDI的长时间会话吗?

代码语言:javascript
复制
@ApplicationScoped
public class EntityManagerProducer {
    @Inject
    @PersistenceUnitName("myUnit")
    private EntityManagerFactory emf;

    @Produces
    @ConversationScoped
    public EntityManager createEntityManager() {
        return emf.createEntityManager();
    }

    public void closeEm(@Disposes EntityManager em) {
        em.close();
    }
}
EN

回答 2

Stack Overflow用户

发布于 2013-12-04 23:30:29

延迟初始化异常实际上并不来自扩展的持久性上下文或CDI或DeltaSpike。它与这里描述的行为完全相同:selectManyCheckbox LazyInitializationException on process validation

JSF 2克隆我的实体的PersistentBag,导致它被分离。我还四处奔波

代码语言:javascript
复制
<f:attribute name="collectionType" value="java.util.ArrayList" />

贯穿我的JSF代码。

票数 0
EN

Stack Overflow用户

发布于 2014-03-31 11:09:01

会话作用域中的EntityManager只是方程的一个方面,您的实体在哪个范围内?

为了避免分离实体,还应该限定会话范围。

顺便提一句:我发现,与长期运行的实体不同,在每个请求范围中重新附加它们要容易得多。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20383443

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档