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

标签 java mysql hibernate

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

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

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

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

最佳答案

从 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;
}

关于java - 在 Hibernate 中更改生成的外键名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16564789/

相关文章:

java - 参数不作为命名参数存在

java - Spring Inject注解导致空指针异常

java - 当连接列为字符串时 Hibernate 中发生错误

java - 使用 JSON 文件初始化静态类

java - 在客户端/服务器应用程序中刷新 JTable

Java 7 更新 45 破坏了我的 Web Start SWT 应用程序

mysql - 将组中的最大值附加到结果的每一行?

php - 分页 Wordpress $wpdb 查询?

java - 程序可以编译,但运行时会报错

javascript - 使用 Node.js 连接到 MySQL 数据库