JPA/Hibernateの使用はかなり新しいです。私は複合キーと実際のデータベース関係の2つのテーブルを結合する最良の方法を把握しようとしています。Hibernate/JPAは複合キーを使用して2つのテーブルを結合します(異種関係はありません)
@Embeddable
public class StepPK implements Serializable{
@Column(name = "step_id")
protected String stepId;
@Column(name = "packet_id")
protected String packetId;
...
}
@Entity
@Table(name = "step_def")
@IdClass(StepPK.class)
public class InprocessPacketStep implements Serializable{
@Id
private String stepId;
@Id
private String packetId;
}
@Embeddable
public class StepDetailPK implements Serializable {
@Column(name = "step_id")
protected String stepId;
@Column(name = "packet_id")
protected String packetId;
@Column(name="user_id")
protected String userId;
@Column(name="parallel_step_id")
protected String parallelId;
...
}
@Entity
@Table(name = "step_detail")
@IdClass(StepDetailPK.class)
public class InprocessPacketStepDetail implements Serializable {
@Id
private String stepId;
@Id
private String packetId;
@Id
private String parallelId;
@Id
private String userId;
}
私が持っているもの、これまで個別のテーブルから情報を引っ張ったときに素晴らしい作品が、私はSTEP_IDにそれらを結合するためにいくつかの方法が必要です。実際に割り当てられた関係はないので、OneToManyとJoinColumnsを実行することは機能していないようです。
私はManyToManyを使用しようとしましたが、コンパイル時に爆発することはありませんが、テストで検査するとSQLGrammar例外が発生します。
これ以外にも、クエリを使用して手動で結合することを考えていますが、entityManager.createQuery("select InprocessPacketStep step join inprocessPacketStepDetail d on d.stepId = step.stepId")
を実行すると実行時エラーが発生します。
ご迷惑をおかけして申し訳ございません。私は成功していないと私は見つけた別のものを試してかなりのグーグルを過ごしました。
ああ、IMA上部のGEリンクは基本的なテーブルの説明です – Jerron
エラーの詳細については、こちらをご覧ください。また、どのような成果を得ようとしていますか? –
なぜ追加のリレーショナル表を使用できないのですか?これらの主体間の関係は何ですか? – Cootri