gpt4 book ai didi

java - 无法自动发现 JPA2 实体

转载 作者:行者123 更新时间:2023-12-01 12:28:40 25 4
gpt4 key购买 nike

我有一个 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com