我试图在两个表之间创建一个OneToMany关系,其中目标表具有复合ID . 复合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上定义了一个包含CURRENCY_ID和YEAR的复合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)

有人知道如何使这项工作?提前致谢 .