JPA 2 с управляемыми транзакциями, не сохраняющими объект - PullRequest
1 голос
/ 15 января 2011

Я использую реализацию 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 голосов
/ 15 января 2011

Это часть кода EJB? В противном случае вам может понадобиться запустить и зафиксировать Tx программно.

...