EclipseLink忽略@Access,在Hibernate中正常工作

时间:2012-05-21 09:18:57

标签: hibernate netbeans jpa-2.0 eclipselink


我在一个字段上有一个@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;
}

1 个答案:

答案 0 :(得分:5)

问题是实体错过了类级别注释:

@Access(AccessType.FIELD)

只需在@Entity中添加下一个。当注释字段和方法时,您不知道实际使用了哪种访问类型。在你的情况下,它似乎是方法访问​​,并且简单地忽略@EmbeddedId。

在JPA 2.0规范中,用以下词语告知:

  

混合注释放置的应用程序的行为   实体层次结构中的字段和属性没有显式   指定Access注释是未定义的   ...
  当Access(FIELD)应用于这样的类时,可以   有选择地指定类中的各个属性   财产访问。指定持久性属性以供访问   持久性提供程序运行时,必须指定该属性   接入(属性)。