Profileテーブルの一部に参加する権限テーブルを持つ多くの関連するものを持っています。特権テーブルには、profile_idとprivilege_idのマルチパートキーがあります。 profile_idにのみProfileテーブルからPrivilegeテーブルに参加し、特権のコレクションを取得したいと思います。私のプロフィールクラスでJPA @OneToManyがマルチパートキー
私が持っている
@OneToMany(fetch = FetchType.LAZY)
@JoinColumn(name = "PROF_ID")
public List<ProfilePrivilegeEO> getProfilePrivileges()
{
return m_profilePrivileges;
}
マイ特権クラスiは、静的ウィーバーが言うことを行うときProfilePrivilegeIdが、しかし
@Embeddable
public class ProfilePrivilegeId
implements Serializable
{
private Integer m_profileId;
private Integer m_privNumber;
@Column(name = "PROF_ID")
public Integer getProfileId()
{
return m_profileId;
}
@Column(name = "PRIV_NUM")
public Integer getPrivNumber()
{
return m_privNumber;
}
.....
}
ある
private ProfilePrivilegeId m_profileId;
@EmbeddedId
public ProfilePrivilegeId getProfileId()
{
return m_profileId;
}
あります
The @JoinColumns on the annotated element [method getProfilePrivileges] from the entity
class [class com.acme.ProfileEO] is incomplete. When the source entity class uses a
composite primary key, a @JoinColumn must be specified for each join column using the
@JoinColumns. Both the name and the referencedColumnName elements must be specified in
each such @JoinColumn.
しかし、プロファイルテーブルがprivilege_idsの知識を持たないJPA iは特権テーブルの両方のキーを指定することを要求すべき理由は...私は見ていない、それはなぜいない正当な理由で、JPAによって作られただけで、任意の決断です。 ..これを動作させるためには何をする必要がありますか? (私はのEclipseLinkを使用しています。)
最初の部分は私がやったことです。プロファイルは、特権に対するOneToManyです。他の方法ではありません。結合は、profile_idのみで行われます。 – MeBigFatGuy
ProfilePrivilegeEOとは何ですか? @JoinColumnsアノテーションを入れ、そこに2つの@JoinColumnを使用します。 @OneToManyでは、キーが外部クラスのPrivilege(実際にはどこにあるべきか)にあるので、これは生成されたスキーマに負の影響を与えません。 –
ProfilePrivilegeEOは、特権テーブルのエンティティです。私は、Profileクラスから指定する2つの@JoinColumnを持っていません。なぜなら、特権についてはわからないからです。それが問題だ。 – MeBigFatGuy