Eclipse IDE 在 JPA 中显示复合主键 类 错误
Eclipse IDE showing error for Composite Primary Key classes in JPA
我有一个实体 class,其复合 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 cannot be resolved to a type"
在另一个项目中,我使用具有复合 PK 的实体,没有任何错误。
现在这似乎是一个 JPA 方面的问题,想知道为什么 Eclipse 无法解析 UomConversionPK 还是我做错了什么?
好吧,当使用 JPA 工具从表创建 JPA 实体时,@EmbeddedId
注释有时会出现此错误,但并非总是如此。
在我的例子中,直到我将以下设置为 Ignore
然后返回 Error
,这个问题才得到解决:
Windows -> Preferences -> Java Persistence -> JPA -> Errors/Warnings -> Attribute -> Embedded ID classes should implement hashcode() and equals()
。
即使 Embeddable class 确实具有 hashcode() 和 equals() 方法实现,也会发生此错误。也许这对你也有用。
我有一个实体 class,其复合 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 cannot be resolved to a type"
在另一个项目中,我使用具有复合 PK 的实体,没有任何错误。
现在这似乎是一个 JPA 方面的问题,想知道为什么 Eclipse 无法解析 UomConversionPK 还是我做错了什么?
好吧,当使用 JPA 工具从表创建 JPA 实体时,@EmbeddedId
注释有时会出现此错误,但并非总是如此。
在我的例子中,直到我将以下设置为 Ignore
然后返回 Error
,这个问题才得到解决:
Windows -> Preferences -> Java Persistence -> JPA -> Errors/Warnings -> Attribute -> Embedded ID classes should implement hashcode() and equals()
。
即使 Embeddable class 确实具有 hashcode() 和 equals() 方法实现,也会发生此错误。也许这对你也有用。