[英]How to use a Primary Key also as a Foreign Key reference with JPA and Hibernate?
我想创建一个表,其中对象的primary key
也应该作为两个@ManyToOne
表的foreign key
。
是否可以在不创建额外的表列的情况下引用和重复相同的主键ID?
例:
@Entity
public class Person {
@Id
private int personId;
@ManyToOne
@JoinColumn(name="fk_address_id", foreignKey=@ForeignKey(name="fk_address"))
private Address address;
@ManyToOne
@JoinColumn(name="fk_location_id", foreignKey=@ForeignKey(name="fk_location"))
private Location location;
}
问题: Address
和Location
的@Id
始终与Person
@Id
相同。 上面的映射将导致hibernate生成3列。 id, fk_address, fk_location
,其中每个列具有相同的值(id)。
问题:是否可以为该人设置primary key
@Id,同时告诉hibernate这是否是更多@ManyToOne
外键映射的外键,而没有创建这些列?
假设您在Person
, PersonAddress
和PersonLocation
之间存在一对一关联, PersonAddress
需要使用@MapsId
JPA批注,因为这是映射一对一表关系的最佳方式 。
我在GitHub上添加了一个例子。 基本上,您可以映射这样的关联:
@Entity(name = "Person")
public class Person {
@Id
private Long personId;
@OneToOne
@MapsId
@JoinColumn(name = "personId")
private PersonAddress address;
@OneToOne
@MapsId
@JoinColumn(name = "personId")
private PersonLocation location;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.