java - 无法自动发现 JPA2 实体

标签 java hibernate maven jakarta-ee jpa

我有一个 Maven 项目,一个独立的 JPA 工具。

这个主项目依赖于另一个包含所有实体类的maven项目。

但是,JPA 似乎没有自动找到我的实体。我的 Eclipse 项目 > 属性 > jpa > 自动发现也已启用。

我的 persistence.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="myapp-ds" transaction-type="RESOURCE_LOCAL">        
        <description>Vecchio</description>
        <provider>org.hibernate.ejb.HibernatePersistence</provider>
        <exclude-unlisted-classes>false</exclude-unlisted-classes>
        <properties>
            <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver" />
            <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/myapp" />
            <property name="javax.persistence.jdbc.user" value="root" />
            <property name="javax.persistence.jdbc.password" value="xxx" />
            <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect" />
            <property name="hibernate.show_sql" value="true" />            
            <property name="hibernate.archive.autodetection" value="class"/>
        </properties>

    </persistence-unit>

</persistence>

它位于 target/classes/META-INF 中。

使用实体时的错误是:

Exception in thread "main" java.lang.IllegalArgumentException: Unknown entity: model.legacy.dto.myentity
    at org.hibernate.jpa.spi.AbstractEntityManagerImpl.persist(AbstractEntityManagerImpl.java:1184)
    at it.test.Main.main(Main.java:23)

最佳答案

如果您使用独立项目,则持久单元只会自动扫描主 jar 中包含的类。其他 jar 不会像 war 那样包含在存档中,但会根据需要在类路径中搜索 => 默认情况下不会扫描其他项目创建的 jar 中包含的实体类。

您可以使用<jar-file>full jar location</jar-file> ,但除非您设法将所有 jar 打包在同一目录中,否则它将是高度不可移植的,但即使如此,它也只是安装的约定。这就是为什么许多文档(例如 Hibernate Entity Manager 指南)建议在 JSE 环境中显式列出当前 jar 之外的所有实体类。

关于java - 无法自动发现 JPA2 实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26121496/

相关文章:

Java JTable - 为选定的行着色

java - Hibernate : object. org.hibernate.MappingException

java - 我正在尝试使用 wro4j Maven 在构建时压缩 js 和 css 文件

java - 测试端点上的 jaxws-maven-plugin wsgen

java - 停止 JUnit 中的参数化测试套件

java - 如何将字符位置转换为 UTF-8 文件中的字节位置?

java - 获取PDFBox中的文本颜色

java - 比较 Hibernate 中日期时间字段的时间部分

java - 找不到 org.hibernate.service.jdbc.connections.internal.C3P0ConnectionProvider 提供程序类

java - org.apache.commons.mail,version=[1.3,2) -- 无法解决 CQ5(AEM) 中的问题