我有一个带有复合键的实体,所以我使用 @Embeddable 和 @EmbeddedId 注释。可嵌入类看起来像这样:
@Embeddable
public class DitaAdminAccountSkillPK implements Serializable {
@ManyToOne
@JoinColumn(name = "admin_id")
private DitaAdmin admin;
@ManyToOne
@JoinColumn(name = "account_id")
private DitaAccount account;
//constructor, getters, setters...
}
以及使用它的实体:
@Entity
public class DitaAdminAccountSkill {
@EmbeddedId
private DitaAdminAccountSkillPK id;
//constructor, getters, setters...
}
现在我想将实体映射到另一个实体中,如下所示:
@OneToMany(fetch = FetchType.LAZY, mappedBy = "id.admin")
private List<DitaAdminAccountSkill> accountSkills;
注意mappedBy = "id.admin"使用DitaAdminAccountSkill的id字段引用DitaAdminAccountSkillPK中的admin字段。
这编译并运行得很好。但是,在 Eclipse 中显示错误: 在属性“accountSkills”中,“映射者”值“id.admin”无法解析为目标实体上的属性。
请注意,这是一个JPA 问题,这意味着 JPA 方面正在抱怨。现在,我知道我可以改用@IdClass,但我只是想知道为什么它认为这是一个错误。或者我做错了什么?