簡體   English   中英

如何在不止一個值的JPA中使用mappingBy

[英]How to use mappedBy with more than one value JPA

我有2張桌子:貨幣和匯率

幣種的主鍵由“費率”中的foreigh鍵的inputCurrency和outputCurrency引用。

我如何映射這些以便進行層疊?

我在Rate(包含foreigh鍵的表)中嘗試過

@ManyToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "INPUT_CURRENCY")
private Currency inputCurrency;

@ManyToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "OUTPUT_CURRENCY")
private Currency ouputCurrency;

但是,如果我從貨幣中刪除項目,則會導致主鍵沖突。我無法刪除貨幣,因為它由Rate中的inputCurrency或outputCurrency引用。

如果要注釋貨幣中的匯率列表,我怎么能說mapledBy =“ inputCurrency”和“ outputCurrency”?

@OneToMany(cascade = CascadeType.ALL,mappedBy ="inputCurrency,outputCurrency")
List<Rate> rates;

解決方案是使用兩種匯率列表:一種用於fk inputCurrency,另一種用於fk outputCurrency

@OneToMany(cascade = CascadeType.ALL,mappedBy ="inputCurrency")
List<Rate> ratesIC;

@OneToMany(cascade = CascadeType.ALL,mappedBy ="outputCurrency")
List<Rate> ratesOC;

您可以選擇以下兩個集合:

List<Rate> inputRate;

List<Rate> outputRate;

每個都有一個對應的mappedBy

第三個@Transient List<Rate> rates;

您可以使用@PostLoad事件將兩個持久列表組​​合成一個臨時列表。

同樣,將元素添加到持久列表之一或從其中刪除時,請確保從聯合列表中添加/刪除。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM