Hibernate javax.persistence.PersistenceException:没有名为

Hibernate javax.persistence.PersistenceException:没有名为,hibernate,maven,jakarta-ee,jpa,intellij-idea,Hibernate,Maven,Jakarta Ee,Jpa,Intellij Idea,我正在尝试使用JPA为我目前参与的JavaEE项目设置持久性,并且在配置方面遇到了许多问题。目前,我在persistence.xml中定义了一个RESOURCE_LOCAL persistence unit,目的是在单元测试中使用这个单元,并在解决设置JTA持久性单元及其相应的JTA数据源之前验证其他所有功能。然而,即使是这种“简单”的情况也会导致错误 详细内容: 我得到的错误是: javax.persistence.PersistenceException: No Persistence pr

我正在尝试使用JPA为我目前参与的JavaEE项目设置持久性,并且在配置方面遇到了许多问题。目前,我在persistence.xml中定义了一个RESOURCE_LOCAL persistence unit,目的是在单元测试中使用这个单元,并在解决设置JTA持久性单元及其相应的JTA数据源之前验证其他所有功能。然而,即使是这种“简单”的情况也会导致错误

详细内容:

我得到的错误是:

javax.persistence.PersistenceException: No Persistence provider for EntityManager named kronosTestLocal
    at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:69)
    at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:47)
    at persistence.EntityManagerTest.getStaff(EntityManagerTest.java:56)
    at persistence.EntityManagerTest.setup(EntityManagerTest.java:17)
    ...
在JUnit测试中引发错误的代码段如下所示:

private final String persistenceUnitName = "kronosTestLocal";
....
final EntityManagerFactory entityManagerFactory =
    Persistence.createEntityManagerFactory(persistenceUnitName);
persistence.xml(位于META-INF内部,并在intellij JPA方面声明): (我试着移除kronos持久性单元,以防它以某种方式干扰,但没有帮助)


org.hibernate.ejb.HibernatePersistence
jdbc/kronos数据库
persistence.entities.dayslottEntity
persistence.entities.DaysEntity
persistence.entities.EmailNotificationsEntity
persistence.entities.EmailSendingTimestampsEntity
persistence.entities.GroupSlotEntity
persistence.entities.GroupsEntity
持久性实体
persistence.entities.preferencesentity
persistence.entities.InvailableDaySentity
persistence.entities.WorkLoadEntity
persistence.entities.InterviewsEntity
persistence.entities.PreferenceTypesEntity
persistence.entities.PreferencesEntity
持久性
持久性
persistence.entities.SwapsEntity
org.hibernate.ejb.HibernatePersistence
persistence.entities.dayslottEntity
persistence.entities.DaysEntity
persistence.entities.EmailNotificationsEntity
persistence.entities.EmailSendingTimestampsEntity
persistence.entities.GroupSlotEntity
persistence.entities.GroupsEntity
持久性实体
persistence.entities.preferencesentity
persistence.entities.InvailableDaySentity
persistence.entities.WorkLoadEntity
persistence.entities.InterviewsEntity
persistence.entities.PreferenceTypesEntity
persistence.entities.PreferencesEntity
持久性
持久性
persistence.entities.SwapsEntity
Maven pom.xml:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>kronos</artifactId>
        <groupId>kronos</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>ejb</artifactId>

    <dependencies>
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-entitymanager</artifactId>
            <version>3.6.7.Final</version>
        </dependency>

        <dependency>
            <groupId>org.postgresql</groupId>
            <artifactId>postgresql</artifactId>
            <version>9.2-1003-jdbc4</version>
        </dependency>

        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.7.6</version>
        </dependency>

        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.11</version>
        </dependency>

        <dependency>
            <groupId>org.mockito</groupId>
            <artifactId>mockito-all</artifactId>
            <version>1.9.5</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-ejb-plugin</artifactId>
                <version>2.3</version>
                <configuration>
                    <ejbVersion>3.2</ejbVersion>
                    <archive>
                        <manifest>
                            <addClasspath>true</addClasspath>
                        </manifest>
                    </archive>
                </configuration>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.1</version>
                <configuration>
                    <source>1.7</source>
                    <target>1.7</target>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

克罗诺斯
克罗诺斯
1.0-快照
4.0.0
ejb
org.hibernate
休眠实体管理器
3.6.7.最终版本
org.postgresql
postgresql
9.2-1003-jdbc4
org.slf4j
slf4j api
1.7.6
朱尼特
朱尼特
4.11
org.mockito
莫基托所有
1.9.5
org.apache.maven.plugins
maven ejb插件
2.3
3.2
真的
org.apache.maven.plugins
maven编译器插件
3.1
1.7
1.7

从我的研究中,我看到很多人都经历过类似的问题,但从我所能看出,我没有犯任何常见的错误。我们中的一些人已经尝试解决这个问题一段时间了,所以欢迎任何帮助

如果您是在JUnit测试中执行此操作的,并且使用maven,
persistence.xml
应该位于
src/test/resources/META-INF/persistence.xml中,它将在测试执行时放在正确的位置。
src/main/resources/META-INF/
中的文件未被使用,因为它不在
测试jar的路径中。

完美,修复了它!谢谢。实际上,我们在META-INF上的persistence.xml与src处于同一级别。修复方法只是删除分解的目标文件夹并让它重新部署。
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>kronos</artifactId>
        <groupId>kronos</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>ejb</artifactId>

    <dependencies>
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-entitymanager</artifactId>
            <version>3.6.7.Final</version>
        </dependency>

        <dependency>
            <groupId>org.postgresql</groupId>
            <artifactId>postgresql</artifactId>
            <version>9.2-1003-jdbc4</version>
        </dependency>

        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.7.6</version>
        </dependency>

        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.11</version>
        </dependency>

        <dependency>
            <groupId>org.mockito</groupId>
            <artifactId>mockito-all</artifactId>
            <version>1.9.5</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-ejb-plugin</artifactId>
                <version>2.3</version>
                <configuration>
                    <ejbVersion>3.2</ejbVersion>
                    <archive>
                        <manifest>
                            <addClasspath>true</addClasspath>
                        </manifest>
                    </archive>
                </configuration>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.1</version>
                <configuration>
                    <source>1.7</source>
                    <target>1.7</target>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>