EclipseLink:EntityManager 没有持久性提供程序

Tho*_*kos 4 jpa eclipse-plugin eclipselink playframework

我正在尝试开发一个网络应用程序。我开始创作一个 Play!Eclipse 中的框架项目。对于模型部分,我选择使用 JPA,因为我已经创建了数据库,所以我正在寻找一种自动生成模型类的方法。我将其转换为多面形式,并使用Dali创建与数据库的映射。在配置过程中,系统提示我选择 JPA 实现,因此我选择 EclipseLink 2.1.3 Helios 作为用户库。所有罐子都添加到我的项目中。在搜索了类似的错误后,我将 persistence.xml 修改为:

    <?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="StudentApplication">
        <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
        <class>models.Grade</class>
        <class>models.GradePK</class>
        <class>models.Student</class>
                <properties>
            <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/studentapplication"/>
            <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/>
            <property name="javax.persistence.jdbc.user" value="root"/>
            <property name="javax.persistence.jdbc.password" value="root"/>
        </properties>
    </persistence-unit>
</persistence>
Run Code Online (Sandbox Code Playgroud)

我现在得到的确切错误是: 执行异常(在 /app/controllers/class.java 中第 98 行左右)发生 PersistenceException :没有名为 jpa 的 EntityManager 的持久性提供程序

我必须注意,在 application.conf 中我已经声明了数据库连接,当我运行应用程序时,我得到

22:03:53,084 信息 ~ 连接到 jdbc:mysql://localhost/studentapplication?useUnicode=yes&characterEncoding=UTF-8&connectionCollat​​ion=utf8_general_ci

最终文件结构为:

-控制器
-模型 -
视图
-META-INF
|_persistense.xml

正如您可能已经了解的那样(除了我的代表),我是 Web 应用程序开发方面的新手,特别是 JPA 方面的新手。我将非常感激任何形式的帮助。如果我发布了不需要的信息或错过了强制性信息,我提前表示歉意。感谢您的时间。

托马斯

Mat*_*ndy 5

您似乎在应用程序中使用与persistence.xml不同的名称引用持久性单元。您的持久性单元在persistence.xml中名为“StudentApplication” 。但是,错误指出它在您的应用程序中被命名为“jpa”。

假设您正在使用应用程序管理的实体管理器,您的应用程序中必须有这样一行:

EntityManagerFactory emf = Persistence.createEntityManagerFactory("jpa");
Run Code Online (Sandbox Code Playgroud)

将其更改为

EntityManagerFactory emf = Persistence.createEntityManagerFactory("StudentApplication");
Run Code Online (Sandbox Code Playgroud)