【问题标题】:Eclipselink entity class autoscan finds non-entitiesEclipselink 实体类自动扫描发现非实体
【发布时间】:2010-08-11 19:32:33
【问题描述】:

我已经激活了 Eclipselink 2.0 的自动检测模式来查找 @Entity 注释类:

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

但是 Eclipselink 告诉我应该向我的实体添加一个 ID:

原因:异常 [EclipseLink-7161] (Eclipse Persistence Services - 2.0.2.v20100323-r6872): org.eclipse.persistence.exceptions.ValidationException 异常描述:实体类 [class com.example.domain.Image] 没有指定主键。它应该定义@Id、@EmbeddedId 或@IdClass。如果您使用这些注释中的任何一个定义了 PK,请确保您的实体类层次结构中没有混合访问类型(已注释的字段和属性)。

示例类:

import java.util.HashSet;
import java.util.Set;

//@Entity No annotation!
public class Image extends File {

    private int width;
    private int height;
    private Set<Image> variants = new HashSet<Image>();

}

我如何告诉 Eclipselink 不是 @Entity 注释的类不是实体?

【问题讨论】:

  • 什么版本的 EclipseLink?您确定已编译类中的 Image 没有 @Entity 注释吗?文件是实体吗?
  • “文件作为实体”的好提示! File 类是一个实体,我将其注释掉以进行测试,但是由 Eclipselink 检查的编译类不是最新的。在mvn clean 之后一切正常。

标签: java orm jpa eclipselink


【解决方案1】:

问题的根源是一个编译的类,它之前有一个@Entity 注释。编译后的类文件仍然有这个注解,因此 Eclipselink 认为它是一个实体。运行 maven clean 后一切正常。

【讨论】:

    猜你喜欢
    • 2018-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-09
    • 2014-11-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多