2012-03-20 5 views
0

JPA에서 하위 클래스를로드하는 쿼리를 작성하는 방법. 예를 들어, CashPayment (있는 경우), CheckPayment (있는 경우)가 포함 된 paymentSet을로드하는 쿼리가 필요합니다.JPA 검색 하위 클래스

감사합니다.

class SalesOrder { 
    Set<Payment> paymentSet; 
} 
class Payment {}; 
class CashPayment extends Payment; 
class CheckPayment extends Payment; 

답변

0

이 문제를 해결하는 방법은 데이터베이스를 모델링 한 방법에 따라 다릅니다. wikibooks page on JPA Inheritance은 어떤 옵션을 사용할 수 있는지보기에 좋습니다. 한 가지 옵션은 모두 Payment을 동일한 테이블에 저장하는 것이지만 @DiscriminatorValue을 제공하여 어떤 구체적인 클래스를로드해야하는지 나타냅니다. 예 :

@Entity 
@Inheritance 
@DiscriminatorColumn(name="PAYMENT_TYPE") 
@Table(name="PAYMENT") 
class Payment { 
    @Id 
    private long id; 
    //... 
} 

@Entity 
@DiscriminatorValue("CASH") 
class CashPayment extends Payment { 
} 

@Entity 
@DiscriminatorValue("CHECK") 
class CheckPayment extends Payment { 
}