一尘不染

在Hibernate中更改外键的生成名称

hibernate

@OneToOne()
@JoinColumn(name="vehicle_id", referencedColumnName="vehicleId")
public Vehicle getVehicle() {
    return vehicle;
}

我的UserDetails类与Entitity类Vehicle具有一对一的映射。Hibernate创建2个表并分配一个通用外键,该键将vehicle_id列(UserDetails表)映射到主键vehicleId(Vehicle表)。

KEY FKB7C889CEAF42C7A1 (vehicle_id),
CONSTRAINT FKB7C889CEAF42C7A1 FOREIGN KEY (vehicle_id) REFERENCES vehicle (vehicleId)

我的问题是:如何将生成的外键更改为有意义的内容,例如Fk_userdetails_vehicle。


阅读 428

收藏
2020-06-20

共1个答案

一尘不染

从JPA 2.1开始,您可以使用@
javax.persistence.ForeignKey
批注:

@OneToOne()
@JoinColumn(name="vehicle_id", referencedColumnName="vehicleId", foreignKey=@ForeignKey(name = "Fk_userdetails_vehicle"))
public Vehicle getVehicle() {
    return vehicle;
}

在JPA 2.1之前,您可以使用Hibernate的@
org.hibernate.annotations.ForeignKey
注释,但是现在不建议使用:

@OneToOne()
@JoinColumn(name="vehicle_id", referencedColumnName="vehicleId")
@ForeignKey(name="Fk_userdetails_vehicle")
public Vehicle getVehicle() {
   return vehicle;
}
2020-06-20