hibernate jpa单元测试自动检测不工作

hibernate jpa单元测试自动检测不工作,jpa,Jpa,我在persistence.xml中有以下内容 <persistence-unit name="test" transaction-type="RESOURCE_LOCAL"> <class>com.merc.model.log.EventLogging</class> <provider>org.hibernate.ejb.HibernatePersistence</provider> <shared-c

我在persistence.xml中有以下内容

<persistence-unit name="test" transaction-type="RESOURCE_LOCAL">
    <class>com.merc.model.log.EventLogging</class>
    <provider>org.hibernate.ejb.HibernatePersistence</provider>
    <shared-cache-mode>ENABLE_SELECTIVE</shared-cache-mode>
    <properties>
        <!-- Scan for annotated classes and Hibernate mapping XML files -->
        <property name="hibernate.archive.autodetection" value="class"/>
    </properties>
</persistence-unit>

com.merc.model.log.EventLogging
org.hibernate.ejb.HibernatePersistence
启用\u选择性
如果我注释掉com.merc.model.log.EventLogging,就会得到未知实体异常


任何关于自动检测为什么不起作用的想法都可能是由于默认情况下自动检测对位于
persistence.xml
的同一类路径项中的类起作用

因此,代码本身和测试都有单独的目标文件夹(例如,如果使用默认配置的Maven),如果编译后这个
persistence.xml
最终位于测试的目标文件夹中,则不会检测到主目标文件夹中的类

您可以使用
元素指向应该搜索实体的其他类路径项

如果您使用Maven,您可以使用资源筛选以优雅的方式完成:

persistence.xml

<jar-file>${project.build.outputDirectory}</jar-file>
<build>
    <testResources>
        <testResource>
            <directory>src/test/resources</directory>
            <filtering>true</filtering>
        </testResource>
    </testResources>
</build>

谢谢你的帮助和解释我尝试了你提到的,但是现在我发现了以下错误。我正在使用maven并试图运行一个单元测试-无法从URL解析持久性单元[file:/media/01CB9CAC704E03A0/Projects/spring/hibernate/genericdao/target/test classes/META-INF/persistence.xml]@user373201:检查这个
persistence.xml
在编译后是什么样子的,maven解析了占位符吗?是的。生成后,${}被/media/01CB9CAC704E03A0/Projects/spring/hibernate/genericdao/target/classes替换。这是project.build.outputDirectory的值。但是我的persistence.xml位于genericdao/target/testclasses/META-INF/persistence中。xml@user373201:但它仍然不起作用?一切看起来都很好,几乎相同的配置对我来说都很好。确保
的子级。