关于“ WFLYJPA0060:需要交易”

时间:2019-10-24 16:04:23

标签: java hibernate jpa wildfly

我在Wildfly应用程序中使用JPA。

如果我通过persistence.xml使用来自应用程序服务器的数据源,一切都很好

<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://xmlns.jcp.org/xml/ns/persistence"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence
                http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd"
             version="2.1">

    <persistence-unit name="ds" transaction-type="JTA">
        <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
        <jta-data-source>java:/jboss/datasources/MySQLDS</jta-data-source>
        <properties>
            .... some options
        </properties>
    </persistence-unit>

</persistence>

但是,如果我尝试在应用程序数据库连接属性中使用它,则会出现“ WFLYJPA0060:需要事务”的异常。

<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://xmlns.jcp.org/xml/ns/persistence"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence
                http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd"
             version="2.1">

<persistence-unit name="ds" transaction-type="JTA">
    <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
    <properties>
        <property name="javax.persistence.jdbc.url"
                  value="jdbc:mysql://localhost:3306/javaee_test_db?createDatabaseIfNotExist=true&amp;characterEncoding=UTF-8&amp;serverTimezone=UTC"/>
        <property name="javax.persistence.jdbc.user" value="root"/>
        <property name="javax.persistence.jdbc.password" value="root"/>
        <property name="javax.persistence.jdbc.driver" value="com.mysql.cj.jdbc.Driver"/>

            .... some options
    </properties>
</persistence-unit>

</persistence>

为什么这种方式起作用?我该怎么办?

0 个答案:

没有答案