我想用一个
@Transactional
方法,而不是ejb:
@javax.inject.Named
// fails @javax.enterprise.context.ApplicationScoped
// fails @javax.enterprise.context.SessionScoped
// works @javax.ejb.Singleton
// works @javax.ejb.Stateless
public class SomeClass {
@javax.persistence.PersistenceContext
private EntityManager em;
@javax.annotation.PostConstruct
@javax.transaction.Transactional
public void someMethod() {
em.persist(someEntity);
}
}
当我注释时
SomeClass
具有
@Singleton
或
@Stateless
,一切正常。
当我注释时
身体类
具有
@ApplicationScoped
或
@SessionScoped
,Wildfly 13显示以下错误消息:
执行此操作需要事务(使用事务或扩展持久性上下文)
我的印象是
@事务性
从Java EE 7起与CDI一起工作。我弄错了吗?或者我只是缺少一些额外的配置?