一对多(双向关联)
订单详情OrderItem
@ManyToOne(cascade = { CascadeType.REFRESH, CascadeType.MERGE }, optional = true)
@JoinColumn(name = "order_id")
@JsonIgnoreProperties("orderItems ")
@NotFound(action= NotFoundAction.IGNORE)
private Order order;
订单 Order
@OneToMany(mappedBy = "order",cascade = { CascadeType.REFRESH, CascadeType.MERGE },fetch = FetchType.LAZY)
@JsonIgnoreProperties("order")
private List<OrderItem> orderItems = new ArrayList<>();
1.cascade = { CascadeType.REFRESH, CascadeType.MERGE }
级联刷新和级联保存,级联删除和级联更新会出错,需要自己手动保存和更新
2.optional = true,默认为true 级查询字段 结果可以默认为空
3. @JoinColumn(name = “order_id”) 定义数据库中的字段名,不写name=”“默认为属性名
4. @NotFound(action= NotFoundAction.IGNORE) 忽略找不到为空的报错
5. @JsonIgnoreProperties(“students”) 级联查询 查询订单的时候查询出订单详情,订单里的订单详情里不在查询订单。查询订单详情的时候查询出其订单,不在查询订单里的订单详情。
6. fetch 一查多 默认lazy 及不查询出来多,想查询出来,在想查询的接口上加上注解
@EntityGraph(attributePaths = {“OrderItem”})
及调用这个接口的查询 急切加载加载出来多