0

宛先テーブルに複合 ID がある 2 つのテーブル間に OneToMany 関係を作成しようとしています。複合 ID の 1 つの列にキーを設定したいのですが、わかりません。テーブルの例:

TABLE EXCHANGE_RATE (
    CURRENCY_ID bigint(20),
    YEAR bigint(20),
    RATE float(13,4));

TABLE PRICE (
    PRICE_ID bigint(20),
    CURRENCY_ID bigint(20),
    VALUE float(13,4));

EXCHANGE_RATE テーブルには、特定の CURRENCY_ID を持つ複数の行がありますが、CURRENCY_ID と YEAR の組み合わせは常に一意です。そこで、CURRENCY_ID と YEAR を含む EXCHANGE_RATE に複合 ID を定義しました。

ただし、PRICE テーブルの fk CURRENCY_ID は、EXCHANGE_RATE テーブルの CURRENCY_ID 列にのみマップされます。PRICE オブジェクトを EXCHANGE_RATE オブジェクトにマップするために考えられるすべてのことを試しましたが、うまくいきません。Price.java クラスの注釈の例を次に示します。

@OneToMany(fetch = FetchType.LAZY)
@JoinColumn(name = "CURRENCY_ID", 
    referencedColumnName = "CURRENCY_ID", 
    insertable = false, updatable = false)
public Set<ExchangeRate> getExchangeRates() {
    return this.exchangeRates;
}

次の注釈も試しました。

referencedColumnName: を除外します。

@JoinColumn(name = "CURRENCY_ID", insertable = false, 
updatable = false)

ID_ を前に付けた referencedColumnName の使用:

@JoinColumn(name = "CURRENCY_ID", referencedColumnName = 
"ID_CURRENCY_ID", insertable = false, updatable = false)

ID で referencedColumnName を使用します。先頭に追加:

@JoinColumn(name = "CURRENCY_ID", referencedColumnName =     
"ID.CURRENCY_ID", insertable = false, updatable = false)

これを機能させる方法を知っている人はいますか?前もって感謝します。

4

0 に答える 0