我试图在两个表之间创建一个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)
有人知道如何使这项工作?提前致谢 .