JPA(Hibernate)一对多,多对一(双向关联)的一些问题

一对多(双向关联)
订单详情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”})
及调用这个接口的查询 急切加载加载出来多

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值