gpt4 book ai didi

hibernate - 使用扩展持久性上下文将@Stateless Ejb 注入(inject)@Stateful

转载 作者:行者123 更新时间:2023-12-03 21:39:26 25 4
gpt4 key购买 nike

我有一个奇怪的情况,将一些无状态 EJB 注入(inject)有状态会阻止一些惰性属性被扩展持久性上下文解析到 Seam 2.2.2 中的长时间运行的对话中

根据我的发现,似乎在注入(inject)有状态 EJB 的无状态 EJB 的持久性上下文中执行的任何查找都会导致在扩展持久性上下文中调用 clear() 方法。

方法用@TransactionAttribute(TransactionAttributeType.SUPPORTS) 注释

例子:

@Stateful
@TransactionAttribute(TransactionAttributeType.SUPPORTS)
public class BeanA {
@PersistenceContext(type = PersistenceContextType.EXTENDED) EntityManager em;
@EJB BeanB beanB;

public MyClassA find(Long id) {
return em.find(MyClassA.class, id);
}

public void method() {
MyClassA a = find(2);
em.contains(a); // true
beanB.find("myId"); // Now every object returned from A's EM are detached.
em.contains(a); // false
}
}

@Stateless
@TransactionAttribute(TransactionAttributeType.SUPPORTS)
public class BeanB {
@PersistenceContext EntityManager em;

public MyClassB find(String id) {
return em.find(MyClassB.class, id);
}
}

谁能证实这一点?

最佳答案

关于hibernate - 使用扩展持久性上下文将@Stateless Ejb 注入(inject)@Stateful,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9294919/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com