Hibernate一对多的插入操作!
时间: 2024-01-16 13:04:40 浏览: 26
Hibernate 一对多的插入操作可以通过两种方式实现:级联插入和手动插入。
1. 级联插入
在一对多关系中,可以将多的一方作为一的一方的属性,在一的一方配置“cascade”属性为“save-update”或“all”,这样在保存一的一方时,会级联保存多的一方。例如:
```
public class Order {
private Long id;
private String orderNo;
private List<OrderItem> items = new ArrayList<>();
// 省略 getter/setter
}
public class OrderItem {
private Long id;
private String name;
private Integer quantity;
private Order order;
// 省略 getter/setter
}
// 在 Order 类中配置一对多关系
public class Order {
// 省略其他属性和方法
@OneToMany(mappedBy = "order", cascade = CascadeType.ALL)
private List<OrderItem> items = new ArrayList<>();
// 省略 getter/setter
}
```
当保存订单时,如果订单中包含订单项,则订单项也会被级联保存。
2. 手动插入
在一对多关系中,也可以手动插入多的一方。例如:
```
public void saveOrder(Order order) {
List<OrderItem> items = order.getItems();
for (OrderItem item : items) {
item.setOrder(order);
session.save(item);
}
session.save(order);
}
```
在保存订单时,先保存订单项,然后再保存订单。需要注意的是,手动插入需要手动设置多的一方的关联属性。