我正在尝试在目标表具有复合 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)
有谁知道如何使这项工作?提前致谢。