jpa使用自定义sql 一对多 @Query

我这边查询的时候

table1 与table 2 是一对多的关系

    @Query(value = " SELECT f.字段1 as 主键,f.字段2,f.字段3,f.字段4,f.字段5,f.字段6, s.字段1 as 主键 ,s.字段2,s.字段3,s.字段4 FROM `table1`  f LEFT JOIN `table2`  s on f.id =s.table1_id", nativeQuery = true)
    List<po对象> findTable1();

用这种方式查询的时候,需要把table1Po里面的table2Po平铺出来,如下:
注意:一定要以table2 的id为主键,否则查询出来的值是重复的

@Table(name = "")
@Entity
@Data
public class ...PO {


//这就是 table2 里面的值	,table2 就是多的那个 ,
//注意:一定要以table2 的id为主键,否则查询出来的值是重复的
 @Id
    private Long table2Id;
    private LocalDateTime table2值1;
    private LocalDateTime table2值2;
    private LocalDateTime table2值3;
    private LocalDateTime table2值4;
    private LocalDateTime table2值5;
    private LocalDateTime table2值6;
    private String table2值7;



//这是table1里面的值, 一的这边
    private Long table1Id;
    private String table1值1;
    private String table1值2;
    private String table1值3;
    private String table1值4;
    private String table1值5;
    }
  public List<> findAll() {

        List<对象> list= new ArrayList<>();
        //分组
        Map<Long, List<po对象>> collect = JpaRepository.findTable1().stream()
        .collect(Collectors.groupingBy(po对象::getId));
      //todo 转换数据
     list.add("转换数据");
       return list;
        }
 

这时查询出来的值就是多条,用代码分组后组装数据,返回数据

这是我最近写测试的时候用到的方法,因这种方法,不是特别可取。数据量很多的时候,此批量查询时是最快的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值