0

我正在尝试在目标表具有复合 ID 的两个表之间创建 OneToMany 关系。复合 id 的一列是我想要键入的那一列,但我无法弄清楚。示例表:

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 的组合始终是唯一的。因此,我在 EXCHANGE_RATE 上定义了一个复合 id,其中包括 CURRENCY_ID 和 YEAR。

但是 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