我的应用程序是一个带有 jpa 和 ejb 的 java ee 应用程序。一切都很完美,但我今天尝试运行它,但没有任何效果。标题中的例外是它不起作用的原因。所有实体都标有@Entity 注释。我读了一些类似的主题,但我不明白如何解决它!
2 回答
如果您正在使用版本控制(即使是没有遥控器的git),那么只需将“一切正常”的版本与今天的版本进行比较。
如果没有更多信息,我猜您有一个已列出的类(在 persistence.xml 或 orm.xml 中)不再存在或已重构为不同的包。
这里有三件事可以帮助你追踪它。
1. 开启 JPA 提供者的日志。
对于 EclipseLink,它将是:<property name="eclipselink.logging.level" value="FINEST" />
2. 检查标有 的类的字段@Entity
。
不在以下列表中的任何字段都必须具有@Entity
或@Embeddable
注释。(注意:枚举字段必须说明它们的持久性,例如@Enumerated(EnumType.STRING)
)
- 原始类型:boolean、byte、short、char、int、long、float 和 double。
- 来自包 java.lang 的等效包装类:
- Boolean、Byte、Short、Character、Integer、Long、Float 和 Double。
- java.math.BigInteger,java.math.BigDecimal。
- java.lang.String。
- java.util.Date,java.util.Calendar,
- java.sql.Date、java.sql.Time、java.sql.Timestamp。
(来源:对象数据库)
3.检查你的persistence.xml
你有<exclude-unlisted-classes>true</exclude-unlisted-classes>
吗?如果是这样,则将其更改为false
,如果可行,则只需在 IDE 中找到未列出的类。
如果列出了类,它们是否仍然存在?使用完全相同的软件包?
“未知实体 bean 类”
当实体未正确加载时会出现此消息。某些 Eclipselink 版本(例如 2.7.1)有一些错误已在较新版本(例如 2.7.5)中修复。
<dependency>
<groupId>org.eclipse.persistence</groupId>
<artifactId>eclipselink</artifactId>
<version>2.7.5</version>
</dependency>
将此链接视为另一个问题,例如您的问题。