2017-04-23 1 views
1

에 내가 가지고 엔티티 클래스하나 하나 약한 엔티티 매핑 JPA

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

} 

하고 기본 키

@Entity 

Class SearchResults 

{ 
    @??? 
    private Long SearchID; 
} 

에 대한 검색 클래스에 따라 약한 엔티티 또 다른 엔티티 클래스 (의 SearchResult 무엇 내 약한 엔터티 "SearchResults"에서 "검색"엔터티 클래스의 "SearchID"를 내 기본 키로 할당해야합니다.

+0

너무 Id' @'사용하지 왜의 SearchResult 테이블이 SearchID 열이있는 경우 ? 그렇지 않으면이 테이블에 대한 자세한 정보를 제공해야합니다 .. – 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; 
} 

전체와

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

Deriver 식별자 여기에있는 숫자 : http://vard-lokkur.blogspot.com.br/2014/05/onetoone-with-shared-primary-key.html

1

SearchResult는 엔티티 일 필요는 없습니다.

다른 답변에서 제안한 것처럼 공유 된 PK를 사용하여 엔티티로 매핑 할 수 있지만 약한 엔티티는 연결된 검색과 독립적으로 존재할 수 없으므로 소스 코드로 매핑 될 수 있습니다.

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 
}