2012-03-20 69 views
0

在JPA中,如何編寫查詢以加載子類。例如,我需要一個查詢來加載包含CashPayment的paymentSet(如果有的話),CheckPayment(如果有的話)。JPA搜索子類

謝謝。

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

回答

0

你如何解決這個問題取決於你如何建模你的數據庫。 wikibooks page on JPA Inheritance非常適合查看可用的選項。一種選擇是將所有Payment s存儲在同一個表中,但提供@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 { 
}