【问题标题】:Eclipse IDE showing error for Composite Primary Key classes in JPAEclipse IDE 在 JPA 中显示复合主键类的错误
【发布时间】:2019-01-17 03:48:05
【问题描述】:

我有一个具有复合 PK 的实体类,如下所示:
使用@Embeddable 和@EmbeddedId 注释。

/** The primary key class for the uom_conversion database table. */
@Embeddable
public class UomConversionPK implements Serializable {
    private static final long serialVersionUID = 1L;

    @Column(name="product_id", insertable=false, updatable=false)
    private int productId;

    @Column(name="base_uom_id", insertable=false, updatable=false)
    private int baseUomId;

    @Column(name="to_unit_id", insertable=false, updatable=false)
    private int toUnitId;
    //getters, setters
}

而使用它的实体是:

/** The persistent class for the uom_conversion database table. */
@Entity
@Table(name="uom_conversion")
public class UomConversion implements Serializable {
    private static final long serialVersionUID = 1L;

    @EmbeddedId
    private UomConversionPK id;
}

这里 Eclipse 显示错误:“UomConversionPK 无法解析为类型”

在另一个项目中,我正在使用具有复合 PK 的实体,没有任何错误。

现在这似乎是 JPA 方面的问题,想知道为什么 Eclipse 无法解析 UomConversionPK 还是我做错了什么?

【问题讨论】:

  • 您是否在UonConversion 类中导入com.itsys.erp.server.dal.entities.UomConversionPK
  • UomConversion 和 UomConversionPK 类都在同一个包中。这个错误也发生在其他实体类中 - 具有复合 PK。
  • 你确定它们在同一个包中吗? Eclipse 可以看到您的 UomConversionPK 类,但在没有显式导入的情况下从 UomConversion 中看不到它,这表明它实际上位于不同的包中。

标签: java eclipse hibernate jpa composite-primary-key


【解决方案1】:

在使用 JPA 工具从表创建 JPA 实体时,@EmbeddedId 注释有时会出现此错误,但并非总是如此。

在我的情况下,直到我将以下内容设置为 Ignore,然后再返回到 Error,这个问题才得以解决:
Windows -> Preferences -> Java Persistence -> JPA -> Errors/Warnings -> Attribute -> Embedded ID classes should implement hashcode() and equals()。 即使 Embeddable 类确实具有 hashcode() 和 equals() 方法实现,也会发生此错误。可能这也适合你。

【讨论】:

  • 谢谢,这很有效,节省了我很多时间和精力!似乎这是一个日食错误。
  • 顺便说一句,它位于 @IdClass 的类型字段组下(不是嵌入式 ID)...
猜你喜欢
  • 1970-01-01
  • 2012-07-15
  • 1970-01-01
  • 2013-06-07
  • 2012-01-21
  • 1970-01-01
  • 2011-09-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多