2013-05-15 50 views
1

我有一個一對多的映射,它將用戶(UserDetails)映射到車輛的ArrayList。我想知道是否有可能覆蓋它引用表車輛(vehicleid)的ID在user_details_vehicle在一對多映射中更改外鍵的默認名稱:HIBERNATE

@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 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) 
) 

這只是爲了學習的目的。

回答

0

你已經使用ForeignKey.name。設置ForeignKey.inverseName來命名其他FK。

+0

謝謝。有用。感謝大家。 – yovan786

0

是隻是改變它在

inverseJoinColumns = {@ JoinColumn(name = 「vehicle_id」)

,如果你想把它當作my_vehicle_id

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

謝謝,但我在談論默認生成的外鍵。示例Hibernate爲外鍵生成密鑰FKE74E2618AF42C7A1。我想重寫默認名稱以使其更有意義。 – yovan786

+0

這聽起來不對,如果hibernate正在創建這些表,這些列是根據您的映射命名的,但是您告訴我休眠在默認情況下創建了FKE74E2618AF42C7A1列? – Ziul

+0

沒有先生,我在談論外鍵而不是列的名稱。 – yovan786