我在字段上有一个带有@EmbeddedId的实体,我重写了字段的访问类型,使其成为Property访问。但是EclipseLink忽略了这一点,在Hibernate中,这是可以的。另外,Netbeans还向我显示了错误,因为:
类必须使用一致的访问类型(字段或属性).
没有为这个实体层次结构定义ID .
@EmbeddedId
private OneId id;
@Transient
private String cosmin;
@Access(AccessType.PROPERTY) // ??
public String getCosmin() {
return cosmin;
}
public void setCosmin(String cosmin) {
this.cosmin = cosmin;
}发布于 2012-06-19 19:21:45
问题是,该实体遗漏了以下类级注释:
@Access(AccessType.FIELD)只需从@Entity中将其添加到下一个。当对字段和方法进行注释时,您不知道实际使用的是哪种访问类型。在您的例子中,它似乎是方法访问,@EmbeddedId被忽略了。
在JPA2.0规范中,这是用以下几个词描述的:
应用程序在没有显式指定Access注释的情况下将注释放在实体层次结构中的字段和属性上的行为是未定义的。
..。
当访问(字段)应用于这样的类时,可以有选择地指定类中的单个属性以进行属性访问。若要指定持久性提供程序运行时访问的持久性属性,则必须指定该属性为access (属性)。
。
https://stackoverflow.com/questions/10682528
复制相似问题