转载

spring-boot data jpa 复杂查询

spring data jpa也知道自己复杂查询应付不了,所以给了nativeQuery=true的方式,也就是原生sql查询

问题:

1:如果用jpql方式查询并且@Query的查询语句只查询某几个属性字段

eg:  select u.userName,u.password,u.email from UserInfo u  如果是这种方式,那么返回值就是List<Object[]>,而不是List<UserInfo> 

eg:  select u from UserInfo u  如果是这种方式,那么返回值就是List<UserInfo>

so 很蓝瘦香菇!!~

所以复杂查询,就使用nativeQuery=true,直接写原生sql,并且返回值能直接映射成List<UserInfo> 而不是List<Object[]>

2:数据分组并获取每组最新时间的那条记录,思路:

1) 首先select *,max(createTime) from A  group by name,(这个时候name已经做了分组,同时携带最新时间,剩下要做的就是级联查询,让时间等于最新时间,name等于不同组的name)  

2) 其次select a.* from A  a inner join  (select *,max(createTime)  i_createTime from A  group by name) result  where  a.name=result.name  and a.createTime=result.i_createTime 

3) 完成分组查询!

将以上sql粘帖到@Query(value="",nativeQuery=true)里面,返回值就能正常返回List<泛型>

原文  http://www.blogjava.net/liuguly/archive/2017/11/17/432901.html
正文到此结束
Loading...