在JPA中,如何編寫查詢以加載子類。例如,我需要一個查詢來加載包含CashPayment的paymentSet(如果有的話),CheckPayment(如果有的話)。JPA搜索子類
謝謝。
class SalesOrder {
Set<Payment> paymentSet;
}
class Payment {};
class CashPayment extends Payment;
class CheckPayment extends Payment;
在JPA中,如何編寫查詢以加載子類。例如,我需要一個查詢來加載包含CashPayment的paymentSet(如果有的話),CheckPayment(如果有的話)。JPA搜索子類
謝謝。
class SalesOrder {
Set<Payment> paymentSet;
}
class Payment {};
class CashPayment extends Payment;
class CheckPayment extends Payment;
你如何解決這個問題取決於你如何建模你的數據庫。 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 {
}
您需要映射繼承關係。我參考了文檔:http://download.oracle.com/otndocs/jcp/persistence-2.0-fr-oth-JSpec/。您也可以瀏覽與「jpa繼承」相關的stackoverflow問題。