java - 如何在hibernate中使用作为另一个表的复合主键的部分外键作为主键?
问题描述
我有 2 个表。表 A 包含复合主键。我将此键用作另一个表中的外键。但是在这个表中我需要一个复合主键,其中一列我需要从 A 表的复合键中获取它。我无法使用 mapsId 实现这一点,因为它占用了整个 CK。有没有办法实现它?
我只需要像下面这样的休眠方式:
解决方案
以下是您如何映射与您链接到的 SO 问题中的数据库表相对应的实体:
@Entity
public class Concert {
@Id
Integer id;
String name;
...
}
@Embeddable
public class ConcertDetailsId {
Date date;
Integer concertId; // corresponds to PK type of Concert
}
@Entity
public class ConcertDetails {
@EmbeddedId
ConcertDetailsId id;
@MapsId("concertId") // maps concertId attribute of embedded id
@ManyToOne
Concert concert;
BigDecimal cost;
...
}
这是您尝试使用的方式@MapsId
吗?如果是这样,问题是什么?
JPA 2.2 规范的第 2.4.1 节讨论了派生的身份(带有示例) 。