1

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);

コードが実行され、例外はスローされません。データベースを確認すると、何も保持されていません。何か不足していますか、それともオブジェクトがコンテナ管理のトランザクションで存続するにはこれで十分でしょうか?

4

1 に答える 1

0

そのコードは EJB の一部ですか? そうしないと、Tx をプログラムで開始してコミットする必要がある場合があります。

于 2011-01-14T22:42:58.390 に答える