2017-04-23 5 views
1

に私が持っているエンティティークラス一つ一つの弱いエンティティマッピングJPA

@Entity 
Class Search 
{ 
    @Id 
    private Long SearchID; 
    private String Type; 

} 

とその主キー

@Entity 

Class SearchResults 

{ 
    @??? 
    private Long SearchID; 
} 

のための検索クラスに依存弱いエンティティである別のエンティティクラス(にsearchResults何私の弱いエンティティ "SearchResults"の主キーとして "Search"エンティティクラスの "SearchID"を割り当てる必要があります。

+0

にsearchResultsテーブルがSearchID列を持っているなら、なぜあまりにもId' @ '使わないのでしょうか?それ以外の場合は、これらのテーブルに関する詳細を教えてください。 – ericbn

+0

"SearchResults"の "searchID"は検索クラスの "SearchID"に依存します。 –

答えて

1

共有プライマリキーのJPA概念を使用すると、rel ationship次のように:

あなたのメインクラス:

@Entity 
public class Search { 
    @Id 
    private Long searchID; 
    private String type; 
} 

シングル属性を持つ派生識別子

共有マッピング

@Entity 
public class SearchResults { 
    @Id 
    private Long searchID; 

    @MapsId 
    @OneToOne 
    @JoinColumn(name = "SEARCHID")  
    private Search search; 
} 

全Aと

@Entity 
public class SearchResults { 
    @Id 
    @OneToOne 
    @JoinColumn(name = "SEARCHID")  
    private Search search; 
} 

導出手段識別子ここに:http://vard-lokkur.blogspot.com.br/2014/05/onetoone-with-shared-primary-key.html

1

SearchResultはエンティティである必要はありません。

弱いエンティティとして、関連する検索とは独立して存在することができないため、エンベデッドとしてマップすることができます。

https://en.wikibooks.org/wiki/Java_Persistence/Embeddables

@Entity 
public class Search 
{ 
    @Id 
    private Long SearchID; 

    private String Type; 

    @ElementCollection 
    @CollectionTable(....) 
    private Set<SearchResults> results; 
} 


@Embeddable 
public class SearchResults 
{ 
    //does not need an Id 

    //other fields 
}