gpt4 book ai didi

java - Java SE : Object: entity. Customer@5e80188f 上的 JPA 不是已知实体类型

转载 作者:可可西里 更新时间:2023-11-01 07:00:22 24 4
gpt4 key购买 nike

我在关注

https://glassfish.java.net/javaee5/persistence/persistence-example.html

在 Java SE 环境中测试 JPA。在 Eclipse 中,我:

  • 创建了一个新的 JPA (2.1) 项目;
  • 在选项->JPA->持久类管理中,我选择了“自动发现带注释的类”而不是“带注释的类必须列在 persistence.xml 中”。

我成功导入了 zip 文件 (Client.java Customer.java Order.java) 中的树 Java 类,并修改了 persistence.xml 文件以满足我的需要。但是在尝试执行 main 时出现以下错误。

[EL Info]: 2013-10-18 17:37:54.749--ServerSession(263489307)--EclipseLink, version: Eclipse Persistence Services - 2.5.1.v20130918-f2b9fc5
[EL Info]: connection: 2013-10-18 17:37:55.34--ServerSession(263489307)--file:/home/caterpillar/workspace/JPA_Java_SE/build/classes/_JPA_Java_SE login successful
[EL Warning]: metamodel: 2013-10-18 17:37:55.359--The collection of metamodel types is empty. Model classes may not have been found during entity search for Java SE and some Java EE container managed persistence units. Please verify that your entity classes are referenced in persistence.xml using either <class> elements or a global <exclude-unlisted-classes>false</exclude-unlisted-classes> element
Exception in thread "main" java.lang.IllegalArgumentException: Object: entity.Customer@5e80188f is not a known entity type.
at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.registerNewObjectForPersist(UnitOfWorkImpl.java:4228)
at org.eclipse.persistence.internal.jpa.EntityManagerImpl.persist(EntityManagerImpl.java:496)
at client.Client.testInsert(Client.java:82)
at client.Client.main(Client.java:49)

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="JPA_Java_SE">
<properties>
<property name="javax.persistence.logging.level" value="FINE"/>
<property name="javax.persistence.logging.thread" value="false"/>
<property name="javax.persistence.logging.session" value="false"/>
<property name="javax.persistence.logging.timestamp" value="false"/>
<property name="javax.persistence.logging.exceptions" value="false"/>

<property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/test?useUnicode=true&amp;characterEncoding=utf8"/>
<property name="javax.persistence.jdbc.user" value="root"/>
<property name="javax.persistence.jdbc.password" value="password"/>
<property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/>
</properties>
</persistence-unit>
</persistence>

项目目录树:

$ tree
.
├── build
│   └── classes
│   ├── client
│   │   └── Client.class
│   ├── entity
│   │   ├── Customer.class
│   │   └── Order.class
│   └── META-INF
│   └── persistence.xml
├── sql
│   ├── tables_derby.sql
│   └── tables_oracle.sql
└── src
├── client
│   └── Client.java
├── entity
│   ├── Customer.java
│   └── Order.java
└── META-INF
└── persistence.xml

10 directories, 10 files

所有类代码与示例文件相同,位于 http://glassfish.dev.java.net/javaee5/persistence/JPASE.zip

最佳答案

您的 persistence.xml 中缺少下一行:

<exclude-unlisted-classes>false</exclude-unlisted-classes>

此行的位置如下例所示:

<?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="SamplePU" transaction-type="RESOURCE_LOCAL">
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
<exclude-unlisted-classes>false</exclude-unlisted-classes>
<properties>
<property name="javax.persistence.jdbc.url" value="jdbc:derby://localhost:1527/sample"/>
<property name="javax.persistence.jdbc.password" value="123"/>
<property name="javax.persistence.jdbc.driver" value="org.apache.derby.jdbc.ClientDriver"/>
<property name="javax.persistence.jdbc.user" value="root"/>
<property name="eclipselink.logging.level" value="ALL"/>
<property name="eclipselink.ddl-generation" value="drop-and-create-tables"/>
</properties>
</persistence-unit>
</persistence>

关于java - Java SE : Object: entity. Customer@5e80188f 上的 JPA 不是已知实体类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19454725/

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