spring-boot:使用JPA访问数据源(四)模型Entity关联

上一篇文章: spring-boot:使用JPA访问数据源(三)实现分页查询

一、关联查询

在日常开发中,少不了表的关联。比如订单表,需要关联订单详情表,用于获取该订单下购买了多少样商品,当时的价格是怎么样的。那么如何使用JPA进行查询呢?

数据库表:order和order_goods,通过order.id和order_goods.order_id进行一对多关联

编写Entity:这里需要编写Order和OrderGoods两个实体类,这里只列出关键点,注释统一标记在字段上(也可以标注在get方法上,但是不能混用)

OrderEntity:

@OneToMany(cascade=CascadeType.ALL, mappedBy="orderId", fetch=FetchType.LAZY)
private List orderGoodsList = new ArrayList();

OrderGoodsEntity:

@ManyToOne(cascade=CascadeType.ALL, optional=false, targetEntity=Order.class)
@JoinColumn(name="orderId", nullable=false)
private Order orderId;

这样就可以查询到订单下面的商品详情啦!

二、新增订单

第一点只是进行了查询,在订单的过程中,往往包含了新增订单。

实现代码:

//模拟订单
Orders orders = new Orders();
orders.setOrderNumber("A20190214973");
orders.setTotalPrice(100.0);

List orderGoodsList = new ArrayList();
OrderGoods oGoods = new OrderGoods();
//这步很关键,不然插入商品记录时,order_id=null导致执行失败
oGoods.setOrderId(orders);
oGoods.setGoodsId(5L);
oGoods.setPrice(50.0);
oGoods.setNumber(2);
orderGoodsList.add(oGoods);
orders.setOrderGoodsList(orderGoodsList);

//保存
ordersRepository.save(orders);

三、删除订单

ordersRepository.deleteById(orderId);

可以参考我的项目:

https://github.com/lizhibin205/simple_web_v2/blob/master/simple-webapp/src/main/java/com/bytrees/web/entity/

你可能感兴趣的:(Java)