【问题标题】:CDI Transactions warningsCDI 交易警告
【发布时间】:2014-08-12 14:40:56
【问题描述】:

在调用与数据库 (JPA) 一起使用的方法后,我收到警告:

@Named    
public class SomeClass{
    
@PersistenceContext(unitName = "jpaLayer")
private EntityManager entityManager;
        .....
        .....
    @Transactional
    public T save(T entity) {
            entityManager.persist(entity);
            return entity;
    }
}

在事务上下文之外调用具有事务注释和 TxType 为 REQUIRED 的托管 bean。开始交易...

然后它生成 SQL 查询,一切正常。

信息:休眠:插入 ALL_USERS_EXMPL(DATE_ADDED、登录名、密码)值(?、?、?)

我怎样才能摆脱这些警告?

【问题讨论】:

    标签: java jpa cdi


    【解决方案1】:

    使用REQUIRES_NEW 而不是REQUIRED 在事务上下文之外运行它。 请参考docs

    你需要有@Transactional(Transactional.TxType.REQUIRES_NEW)

    【讨论】:

    • 谢谢,但是现在,每次我调用该方法时,服务器都会打印消息“In REQUIRES_NEW TransactionalInterceptor” - 我可以关闭它们吗?
    • 您需要在该包的日志配置中进行设置,任何包的阈值级别都可以使用 log4j 在您的日志中设置。
    猜你喜欢
    • 1970-01-01
    • 2013-02-15
    • 2012-12-22
    • 1970-01-01
    • 2012-09-06
    • 2018-04-15
    • 2022-01-24
    • 2022-07-17
    • 1970-01-01
    相关资源
    最近更新 更多