【问题标题】:Can't find persistence.xml and provider while both specified都指定时找不到 persistence.xml 和提供程序
【发布时间】:2019-03-19 22:02:03
【问题描述】:

当我运行单元测试时出现这两个错误

org.hibernate.jpa.boot.internal.PersistenceXmlParser doResolve 信息:HHH000318:在类路径中找不到任何 META-INF/persistence.xml 文件

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

我没有同时理解它们,因为正如您在图片 en persistence.xml 文件中看到的那样,该文本下方的所有内容都是他所抱怨的。

这里有我的persistance.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="dbContext">
        <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
        <properties>
            <property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver"/>
            <property name="hibernate.connection.url" value="{urltodb}"/>
            <property name="hibernate.connection.autocommit" value="false"/>
            <property name="hibernate.connection.username" value="{myusername}"/>
            <property name="hibernate.connection.password" value="{mypassword}"/>
            <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5Dialect"/>
            <property name="hibernate.connection.CharSet" value="utf8"/>
            <property name="hibernate.connection.characterEncoding" value="utf8"/>
            <property name="hibernate.connection.useUnicode" value="true"/>
            <property name="hibernate.show_sql" value="true"/>
            <property name="hibernate.hbm2ddl.auto" value="update"/>
        </properties>
    </persistence-unit>
</persistence>

【问题讨论】:

  • 不应该在src/main/resources/META-INF吗?
  • 是的。 Intellij 只是显示不同,我不知道为什么。但是当我将鼠标悬停在持久性文件上时,它指出它在 scr/main/resources/META-INF

标签: java hibernate


【解决方案1】:

您的文件夹结构完全混乱:

  1. 您的src-Folder 被标记为源文件夹(蓝色),因此子文件夹 main 被解释为 Java-Package
  2. 您的资源文件夹在您的 sources/main-文件夹中 这就是 Intellij 将其解释为包 main.resources.META-INF 的原因。
  3. (所有真正的包都以大写开头。这不是错误,但不寻常)

您的文件夹结构应如下所示:

  • src/main/java => 将此标记为源文件夹并将所有 java 包放在那里
  • src/main/resources => 将此标记为资源文件夹并将您的 META-INF 放在那里

另请参阅:How to create a test directory in Intellij 13?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-25
    相关资源
    最近更新 更多