时间:2011-01-14 21:50:30

标签: jpa-2.0 openjpa

我正在使用JPA 2的OpenJPA实现,并且在将对象持久保存到数据库时遇到问题。我想使用容器管理的事务(Websphere),所以我的理解是,由于事务是管理的,所以不需要像tx.begin(),tx.commit()等样板代码。

 <?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
    <persistence-unit name="buildTest" transaction-type="JTA">
        <jta-data-source>jdbc/lfcbuild</jta-data-source>
        <class>entities.Build</class>
        <properties>
            <property name="openjpa.jdbc.Schema" value="APP"/>
            <property name="openjpa.TransactionMode" value="managed"/>
            <property name="openjpa.ConnectionFactoryMode" value="managed"/>                    
        </properties>
    </persistence-unit>
</persistence>

持久化构建时我正在执行的代码是:

EntityManagerFactory emf = Persistence.createEntityManagerFactory("buildTest");
EntityManager em = emf.createEntityManager();

Build b = new Build();
b.setFirstName("Dick");
b.setLastName("Tracy");

em.persist(b);

代码运行,并且不会抛出任何异常。当我检查数据库时,没有任何内容持续存在。我错过了什么,或者这对于对象是否足以持续容器管理的事务?

1 个答案:

答案 0 :(得分:0)

该代码是EJB的一部分吗?否则,您可能必须以编程方式启动并提交Tx。