我有一個數據庫可以有不同類型的relatinships根據上次業務事務中更新的數據。政策編寫應用程序就是一個例子。主表包含通用的政策級別信息,並且有相關的表格包含代理信息和被保險人信息等信息。當第一個事務被髮出時,所有的表都被填充,但是在後續的事務中,只有具有更新的表被持久化到數據庫中。我現在想要做的是創建實現JPA的類,它們將表之間的關係定義爲一對一。然後,我想爲每個關係實現自定義加載器,以確保每次檢索策略實體時都能夠檢索相應表的最新版本。有誰知道如何實現這個邏輯?我曾嘗試使用@NamedNativeQuery
並使用HQL,但在兩種情況下,它都告訴我我指定的列名不存在。自定義OneToOne休眠/ JPA協會
任何援助將不勝感激。
代碼已在下面提供,以幫助說明我在做什麼。
@Entity
@NamedNativeQuery(name = "loadLatestBilling",
query = "Select {i.*} from TransactionSummary as ts outer join BillingInfo i on i.systemAssignId=ts.systemAssignId where ts.systemAssignId=:systemAssignId and i.transSeqNo<=:transSeqNo order by i.systemAssignId, i.transSeqNo DESC",
resultClass = BillingInfo.class)
public class CoTransactionSummary implements java.io.Serializable,
CdbCoTransactionSummary {
@OneToOne(targetEntity = BillingInfo.class, fetch = FetchType.LAZY)
@org.hibernate.annotations.NotFound(action = org.hibernate.annotations.NotFoundAction.IGNORE)
@Loader(namedQuery = "loadLatestBilling")
public BillingInfo getBillingInfo() {
return billingInfo;
}
public void setBillingInfo(BillingInfo billingInfo) {
this.billingInfo= billingInfo;
}
}
在上面的例子中SystemAssignId將所有的屬於該實體的記錄之間共用。 transSeqNo會針對每個後續事務增加,因此定製加載器會查找與systemAssignId關聯的最高值。
非常感謝您提供任何幫助。