随笔-95  评论-31  文章-10  trackbacks-0
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<泛型>
posted on 2017-11-17 00:50 朔望魔刃 阅读(1098) 评论(0)  编辑  收藏 所属分类: java

只有注册用户登录后才能发表评论。


网站导航: