如何处理“No Persistence provider for EntityManager named”错误?

问题描述 投票:0回答:1

尝试在 IntelliJ 中运行 Java Maven 项目时出现错误“No Persistence provider for EntityManager named”,该项目在 Visual Studio Code 中运行良好,没有错误或警告

我不完全确定是什么代码导致了这个问题

Exception in thread "main" java.lang.ExceptionInInitializerError
Caused by: javax.persistence.PersistenceException: No Persistence provider for EntityManager named default
    at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:61)
    at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:39)
    at JNWR.ServerApplication.<clinit>(ServerApplication.java:18)

这是我的持久化文件

<?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_2.xsd"
             version="2.2">

    <persistence-unit name="default" transaction-type="RESOURCE_LOCAL">
        <description>
            Persistence unit for the JNWR Database
        </description>
        <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
        <class>JNWR.Entity.Customer</class>
        <properties>
            <property name="javax.persistence.jdbc.driver"
                      value="com.mysql.cj.jdbc.Driver" />

            <property name="javax.persistence.jdbc.url"
                      value="jdbc:mysql://localhost:3306/jwrms_db" />

            <property name="javax.persistence.jdbc.user"
                      value="defaultUser"/>

            <property name="javax.persistence.jdbc.password"
                      value="defaultPassword%"/>

            <property name="hibernate.dialect" 
                        value="org.hibernate.dialect.MySQL8Dialect" />
                        
            <property name="hibernate.show_sql"
                      value="true" />

        </properties>

    </persistence-unit>

</persistence>

已经试过:

  • 手动添加
    META-INF
    到类路径,
  • 将其移至根文件夹中,
  • 将其移动到资源文件夹中,
  • 将 persistence.xml 移动到根目录,资源,当然还有
    META-INF
    .
  • 将项目导入到 vscode(有效但我希望它在 IntelliJ 中工作)
java hibernate jpa intellij-idea persistence
1个回答
0
投票

我在使用

struts2
archtype 创建的
maven
项目中遇到了同样的问题,我将持久性放在
webapp->WEB-INF
中,但它不起作用。我通过转到
main->resources
解决了这个问题我在资源中创建了一个名为
META-INF
的文件夹并且它工作正常:)

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.