1
JPA 2의 OpenJPA 구현을 사용 중이고 개체를 데이터베이스에 유지하는 데 문제가 있습니다. 컨테이너 (Websphere)에서 관리하는 트랜잭션을 사용하고 싶습니다. 트랜잭션이 관리되므로 tx.begin(), tx.commit() 등의 상용구 코드가 필요하지 않습니다.관리 대상 트랜잭션이 지속되지 않는 JPA 2
<?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);
코드가 실행되며 예외가 발생하지 않습니다. 데이터베이스를 검사 할 때 아무 것도 지속되지 않습니다. 뭔가 빠졌는가, 아니면 개체가 컨테이너 관리 트랜잭션으로 지속될만큼 충분해야합니까?
아니요 EJB의 일부가 아닙니다. 실제로 OSGi 번들에서 실행됩니다. – stuff22
tx가 없으므로 엔티티 관리자가 Tx의 끝에서 플러시되지 않는 것처럼 보입니다. 상태 비 저장 EJB 메소드에이 코드를 삽입하고 어떤 일이 발생하는지 살펴볼 수 있습니까? EJB가 없다면 보일러 판 tx.begin() 등이 필요합니다. –