@访问被EclipseLink忽略,在Hibernate中正常工作

@访问被EclipseLink忽略,在Hibernate中正常工作,hibernate,netbeans,jpa-2.0,eclipselink,Hibernate,Netbeans,Jpa 2.0,Eclipselink,我在一个字段上有一个具有@EmbeddedId的实体,我对字段的访问类型进行了重写,使其具有属性访问权限。但是,EclipseLink忽略了这一点,在Hibernate中,这是正常的。此外,由于以下原因,Netbeans向我显示错误: 类必须使用一致的访问类型(字段或属性)。 没有为此实体层次结构定义ID。 @EmbeddedId private OneId id; @Transient private String cosmin; @Access(AccessType.PROPERTY)


我在一个字段上有一个具有
@EmbeddedId
的实体,我对字段的访问类型进行了重写,使其具有
属性
访问权限。但是,
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;
}

问题是实体缺少以下类级注释:

@Access(AccessType.FIELD)
只需将它添加到@Entity的下一个。当字段和方法都被注释时,您不知道实际使用的是哪种访问类型。在您的例子中,它似乎是方法访问,而@EmbeddedId则被忽略

在JPA 2.0规范中,这是通过以下文字来说明的:

将注释的放置位置混合在一起的应用程序的行为 实体层次结构中的字段和属性,而不显式 未定义指定访问注释。

当对此类应用访问(字段)时,可以 在类中有选择地为 财产访问权。指定要由用户访问的持久属性的步骤 持久性提供程序运行时,必须指定该属性 访问(属性)


.

您是否尝试过用
@Access(AccessType.FIELD)
注释类?是:)不好,尝试过删除EmbeddedId并放入常规Id。不好。尝试用@Access(AccessType.FIELD)注释标记您的类?您使用的是什么版本?对属性的访问是JPA 2.0 EL>=2.0的一部分