複合キーを持つエンティティがあるため、@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;
DitaAdminAccountSkill のidフィールドを使用して、 DitaAdminAccountSkillPKのadminフィールドを参照するmappingBy = "id.admin"に注意してください。
これは問題なくコンパイルされ、実行されます。ただし、Eclipse では次のようなエラーが表示され ます。
これは、JPA ファセットが不平を言っていることを意味するJPA 問題であることに注意してください。今、代わりに @IdClass を使用できることはわかっていますが、なぜそれがエラーだと思うのでしょうか。それとも、私はひどく間違ったことをしていますか?