4

我正在使用 OpenJPA 并希望将其配置为在每次写入/插入操作时使用自动提交。

目前我必须这样做:

        MyEntity e = new MyEntity();
        em.getTransaction().begin();
        em.persist(e);
        em.getTransaction().commit();

我想要做的是:

MyEntity e = new MyEntity();        
em.persist(e); // auto commit here

我将此属性设置为true:

openjpa.NontransactionalWrite : true

有什么线索吗?!

4

2 回答 2

4

您不能使用 JPA 自动提交。如果要删除本地事务管理,请使用 JTA/CMT 或 Spring 管理的事务。

于 2010-10-10T14:21:33.283 回答
1

据我所知,OpenJPA 使用来自底层连接的自动提交值。但是,每当您开始交易时,它都会将自动提交显式设置为 false。

您可以使用以下代码检查底层连接:

OpenJPAEntityManager oem = OpenJPAPersistence.cast(em);
Connection conn = (Connection) oem.getConnection();
boolean autoCommit = conn.getAutoCommit();
于 2010-10-10T12:59:04.367 回答