繁体   English   中英

如何使用主键作为JPA和Hibernate的外键引用?

[英]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;
}

问题: AddressLocation@Id始终与Person @Id相同。 上面的映射将导致hibernate生成3列。 id, fk_address, fk_location ,其中每个列具有相同的值(id)。

问题:是否可以为该人设置primary key @Id,同时告诉hibernate这是否是更多@ManyToOne外键映射的外键,而没有创建这些列?

假设您在PersonPersonAddressPersonLocation之间存在一对一关联, 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM