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

时间:2013-05-15 18:10:51

标签: java mysql hibernate

我有一对多的映射,它将用户(UserDetails)映射到Vehicle的ArrayList。我想知道是否可以覆盖在user_details_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;
}

我最后想要的create语句是:

CREATE TABLE user_details_vehicles (
 user_id int(11) NOT NULL,
 vehicle_id int(11) NOT NULL,
 UNIQUE KEY vehicle_id (vehicle_id),
 KEY FK_USER_DETAILS (user_id),
 KEY FK_VEHICLE (vehicle_id),
 CONSTRAINT FK_VEHICLE FOREIGN KEY (vehicle_id) REFERENCES vehicle (vehicleId),
 CONSTRAINT FK_USER_DETAILS FOREIGN KEY (user_id) REFERENCES user_details (user_id)
) 

这仅用于学习目的。

2 个答案:

答案 0 :(得分:0)

是的,只需在

中更改即可

inverseJoinColumns = {@ JoinColumn(名称= “vehicle_id”)

如果你想将它作为my_vehicle_id

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

答案 1 :(得分:0)

您已使用ForeignKey.name。设置ForeignKey.inverseName以命名其他FK。