java - JPA - JTA 事务类型的更改不会持久

标签 java jpa eclipselink jpa-2.0 oc4j

我正在使用 JTA,我的 persistence.xml 如下

<?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();
        }
    }
}

但是我无法保留数据库中的更改。是因为没有提交吗?

最佳答案

启用交易后,您必须正确处理它们。 检查这个wikyJPA sample code了解更多详情。

关于java - JPA - JTA 事务类型的更改不会持久,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32478026/

相关文章:

java - 在 float[][] 中搜索 3D 图案

java - JPA在ejb容器中抛出什么异常?

hibernate - JPA:哪些实现支持延迟加载外部事务?

java - 我如何强制 Jackson 使用对象的 setter ?

java - 我如何计算 Java 中像 tan(45) 这样的数字的度数度量?

java - 从 JSP 发送一个完整的对象到 Action 类

Spring-Boot - 激活休眠二级缓存

java - JPA父子关系

java - 使用 EclipseLink 将 @Table 和 @Column 的命名策略更改为小写

java - 为每个实体使用单独的实体管理工厂是否会导致问题?