2015-09-09 5 views
0

Я использую JTA и мой persistence.xml выглядит следующим образомJPA - Изменения не сохраняются для ССТ типа транзакции

<?xml version="1.0" encoding="UTF-8" ?> 
<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_1_0.xsd" version="1.0" 
      xmlns="http://java.sun.com/xml/ns/persistence"> 
    <persistence-unit name="test" transaction-type="JTA"> 
    <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider> 
    <jta-data-source>jdbc/testDS</jta-data-source> 
    <class>test.entity.Employees</class> 
    <exclude-unlisted-classes>true</exclude-unlisted-classes> 
    <properties> 
     <property name="eclipselink.target-server" value="OC4J"/> 
     <property name="javax.persistence.target-database" value="Oracle"/> 
     <property name="javax.persistence.logging.parameters" value="TRUE"/> 
    </properties> 
    </persistence-unit> 
</persistence> 

Как я использую JTA, у меня нет EntityTransaction.

Java фрагмент кода

Employees emp = new Employees(); 
    emp.setEmpNumber(empPOJO.getEmpNumber()); 
    final EntityManager em = getEntityManager(); 
    try {   
      em.merge(vehicleInspection);    
    } finally { 
     if (em != null && em.isOpen()) { 
      em.close(); 
     } 
    } 
} 

Однако я не смог бы сохранить изменения в database.Is это из-за не имея коммита?

+1

Вы называете это транзакционным методом? Также что с вложенным 'try/finally'? –

+0

@ M.Deinum Что вы подразумеваете под транзакционным методом? – user75ponic

+0

Это делается с помощью тестового кода. Если это так, они получают откат. Таким образом, вы не увидите, когда будете запрашивать позже –

ответ

1

С включенными транзакциями вы должны обращаться с ними должным образом. Проверьте это wiky и JPA sample code для получения более подробной информации.