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

最佳答案

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

@Access(AccessType.FIELD)

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

在 JPA 2.0 规范中,这是用以下词语说明的:



.

关于hibernate - @Access 被 EclipseLink 忽略,在 Hibernate 中工作正常,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10682528/

10-12 06:20