2016-03-18 14 views
1

JPA/Hibernateの使用はかなり新しいです。私は複合キーと実際のデータベース関係の2つのテーブルを結合する最良の方法を把握しようとしています。Hibernate/JPAは複合キーを使用して2つのテーブルを結合します(異種関係はありません)

enter image description here

@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")を実行すると実行時エラーが発生します。

ご迷惑をおかけして申し訳ございません。私は成功していないと私は見つけた別のものを試してかなりのグーグルを過ごしました。

+0

ああ、IMA上部のGEリンクは基本的なテーブルの説明です – Jerron

+0

エラーの詳細については、こちらをご覧ください。また、どのような成果を得ようとしていますか? –

+0

なぜ追加のリレーショナル表を使用できないのですか?これらの主体間の関係は何ですか? – Cootri

答えて

0

データベーススキーマは、レガシーとあなたされていない場合、追加の関係表と@ManyToMany関連はトリックを行う必要があり、それを変更することができます。 enter image description here

examplesの多くは、人気のJPA 2のためのWebにあります。 (当然の休止を含む).X実装フレームワーク

そうしないと、このスレッドから解決策を試してみてください: @ManyToMany without join table (legacy database)

関連する問題