java - 无法在 hibernate 中创建一对多映射表

标签 java hibernate

我对 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 (?,?)

所以我在数据库中没有得到任何表名User_vehicle

希望你能理解我的问题。

最佳答案

您已为 @OneToMany 关联指定了 @JoinColumn,因此多方会有一个外键列。这实际上是推荐的方法。

如果您需要使用连接表进行@OneToMany关联,那么您需要省略@JoinColumn并可选择指定@JoinTable来覆盖表和列的默认名称:

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

关于java - 无法在 hibernate 中创建一对多映射表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39318006/

相关文章:

java - 如何将缩写映射到完整字符串?

java - 将对象作为参数传递与将数组作为参数传递有何不同?

java - 在 Android 5.0+ 上在没有 viewPagerAdapter 的布局上显示 pagerSlidingTabStrip

java - 如何将项目从 gwt 2.5.0 升级到 gwt 2.8.2

java - CascadeType (DETACH/REMOVE/REFRESH) 在 OneToMany 上的真实使用情况?

java - Spring Java多部分数据文件保存

java - Apache Tuscany SCA Java 教程 : not able to display the list on UI

java - 删除某些条目时更新数据库 JPA

java - 在 Maven 测试上生成数据库架构(Hibernate)

java - Hibernate 外键到串行列