javax.persistence.PersistenceException:没有名为WebApplication1PU的EntityManager的持久性提供程序

时间:2016-05-29 02:32:55

标签: jpa wildfly persistence-provider

我正在从NetBeans向WildFly 10部署一个简单的Web应用程序,以尝试自学Java EE。但是,尝试从NetBeans运行jpql查询时出现以下错误:

persistence.xml

尽管我已经定义了持久性提供程序。这是我的<?xml version="1.0" encoding="UTF-8"?> <persistence version="2.1" 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"> <persistence-unit name="WebApplication1PU" transaction-type="JTA"> <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider> <jta-data-source>java:/jboss/db</jta-data-source> <exclude-unlisted-classes>false</exclude-unlisted-classes> <properties> <property name="hibernate.dialect" value="org.hibernate.dialect.SQLServer2012Dialect"/> <property name="hibernate.show_sql" value="true"/> </properties> </persistence-unit> </persistence>

10:33:07,600 ERROR [org.jboss.as.controller.management-operation] (ServerService Thread Pool -- 33) WFLYCTL0013: Operation ("add") failed - address: ([
    ("subsystem" => "datasources"),
    ("jdbc-driver" => "JTDS")
]) - failure description: "WFLYJCA0041: Failed to load module for driver [net.sourceforge.jtds]"

当我在WildFly中测试我的数据源时,它可以工作:

enter image description here

我的JPA子系统的默认数据源配置为java:/ jboss / db

我将它列为WildFly中的持久性单元:

enter image description here

我正在使用JTDS驱动程序用于MS SQL Server,我在启动服务器时遇到了这个错误,我无法摆脱:

{{1}}

然而,正如我所说,测试数据源是有效的,所以这不重要。任何人都可以帮助我吗?

2 个答案:

答案 0 :(得分:1)

正如评论所提到的,它说Wildfly无法找到提供者模块。

下载:https://sourceforge.net/projects/jtds/files/jtds/1.3.1/jtds-1.3.1-dist.zip/download - 这是jtds JDBC驱动程序, 并将其安装到wildfly的/ modules目录中。

您可以启动./jboss-cli.sh来安装模块。

请参阅:JTDS module under WildFly (JBoss) 更深入地了解它。

此网址:http://www.mastertheboss.com/jboss-server/jboss-datasource/configuring-a-datasource-with-postgresql-and-jboss-wildfly

如何将postgres jdbc驱动程序安装到wildfly中,但它实际上与其他JDBC驱动程序相同,只是包名更改等。

答案 1 :(得分:-1)

在持久性单元属性中,您缺少以下内容

        <property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/mydb"/>
        <property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver"/>
        <property name="hibernate.connection.username" value="dbroot"/>
        <property name="hibernate.connection.password" value="password"/>