使用@EmbeddedId进行映射时出现 Eclipse 错误
2022-09-03 16:56:24
我有一个带有复合键的实体,所以我使用@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”,它指的是 DitaAdminAccountSkillPK 中使用 DitaAdminAccountSkill 的 id 字段的 admin 字段。
这可以很好地编译和运行。但是,在 eclipse 中显示一个错误:在属性 'accountSkills'中,“映射者”值 'id.admin' 无法解析为目标实体上的属性。
请注意,这是一个 JPA 问题,这意味着 JPA 方面正在抱怨。现在,我知道我可以使用@IdClass,但我只是想知道为什么它认为这是一个错误。或者也许我做错了什么?