JoinColumn--
/**
* 只对一的一方执行save, 多的一方级联保存, 要满足两个条件
* 1. Many的一方负责建立关联关系
* 2. ONE的一方负责级联保存,需要将Many的一方的list设置到ONE的一方
*/
@Transactional
public void save() {
OrderItem o = new OrderItem();
//o.setDate(LocalDateTime.now());
Item i1 = new Item();
i1.setName("pingguo");
i1.setOrderItem(o);//Many的一方负责建立关联关系
Item i2 = new Item();
i2.setName("yali");
i2.setOrderItem(o);
List<Item> items = new ArrayList<>();
items.add(i1);
items.add(i2);
o.setItems(items);//ONE的一方负责级联保存
orderDao.save(o);
}
@Entity
@Table(name = "order_item")
@Setter
@Getter
@NoArgsConstructor
public class OrderItem {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Long id;
@Column(name = "time")
private LocalDateTime date;
@OneToMany(fetch=FetchType.EAGER, cascade=CascadeType.ALL, mappedBy="orderItem")
private List<Item> items;
}
@Entity
@Table(name = "item")
@Getter
@Setter
@NoArgsConstructor
public class Item {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Long id;
private String name;
@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn(name = "order_id")
private OrderItem orderItem;
}