Java 更改一对多映射中外键的默认名称:HIBERNATE

Java 更改一对多映射中外键的默认名称:HIBERNATE,java,mysql,hibernate,Java,Mysql,Hibernate,我有一个一对多映射,它将用户(UserDetails)映射到车辆的ArrayList。我想知道是否可以覆盖默认的外键名,该外键名引用用户\u details\u vehicle中表vehicle(vehicleid)的id @OneToMany @ForeignKey(name="FK_USER_DETAILS") @JoinTable(name="user_details_vehicles", joinColumns={@JoinColumn(name="user_id")},

我有一个一对多映射,它将用户(UserDetails)映射到车辆的ArrayList。我想知道是否可以覆盖默认的外键名,该外键名引用用户\u details\u vehicle中表vehicle(vehicleid)的id

@OneToMany
@ForeignKey(name="FK_USER_DETAILS")
@JoinTable(name="user_details_vehicles",
    joinColumns={@JoinColumn(name="user_id")},
    inverseJoinColumns={@JoinColumn(name="vehicle_id")
    }
)
public Collection<Vehicle> getVehicles() {
  return vehicles;
}

这只是为了学习。

是的,在

inverseJoinColumns={@JoinColumn(name=“vehicle\u id”)

如果你想把它作为我的车号

then set inverseJoinColumns={@JoinColumn(name="my_vehicle_id")

您已经使用了
ForeignKey.name
。设置
ForeignKey.inverseName
来命名另一个FK。

谢谢,但我说的是默认生成的外键。示例Hibernate为外键生成了键FKE74E2618AF42C7A1。我想覆盖默认名称以使其更有意义。如果您好,这听起来不对bernate正在创建表,列是根据您的映射命名的,但是您告诉我hibernate默认创建了FKE74E2618AF42C7A1列?不,先生,我说的是外键的名称,不是列。
then set inverseJoinColumns={@JoinColumn(name="my_vehicle_id")