簡體   English   中英

無法在休眠中創建一對多映射表

[英]Unable to create One to many mapping table in hibernate

我很冬眠。 我創建了兩個實體,例如用戶和車輛,其中用戶與車輛具有一對多的關系。

@OneToMany
@JoinColumn(name="Vehicle_id")
Collection<Vehicle> vehicle = new ArrayList<>();

並像這樣將它們添加到表中

UserInfo user = new UserInfo();
user.setUsername(username);
user.setPassword(password);
user.setDob(dob);

Vehicle vehicle = new Vehicle();
vehicle.setVehicleName("AUdi");
user.getVehicle().add(vehicle);

Vehicle vehicle2 = new Vehicle();
vehicle2.setVehicleName("BMW");
user.getVehicle().add(vehicle2);

SessionFactory sessionfactory = new AnnotationConfiguration().configure().buildSessionFactory();
Session session = sessionfactory.openSession();
session.beginTransaction();
session.save(user);
session.save(vehicle);
session.save(vehicle2);
session.getTransaction().commit();
session.close();

但是我得到的結果像

Hibernate: insert into UserInformation (user_name, DOB) values (?, ?)
Hibernate: insert into Vehicle (vehicleName) values (?)
Hibernate: insert into Vehicle (vehicleName) values (?)
Hibernate: update Vehicle set Vehicle_id=? where vehicleID=?
Hibernate: update Vehicle set Vehicle_id=? where vehicleID=?

沒有創建像

insert into User_vehicle(User_id,vehicle_id) Values (?,?)

所以我在db中沒有得到任何表名User_vehicle

希望你理解我的問題。

您已指定@JoinColumn@OneToMany關聯,因而會有在許多側的外鍵列。 實際上,這是推薦的方法。

如果需要將@OneToMany表用於@OneToMany關聯,則需要省略@JoinColumn並有選擇地指定@JoinTable來覆蓋表和列的默認名稱:

@OneToMany
@JoinTable(
    name="User_Vehicle",
    joinColumns = @JoinColumn(name = "User_Id"),
    inverseJoinColumns = @JoinColumn(name = "Vehicle_Id")
)
Collection<Vehicle> vehicles = new ArrayList<>();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM