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:數(shù)據(jù)分組并獲取每組最新時間的那條記錄,思路:
1) 首先select *,max(createTime) from A group by name,(這個時候name已經(jīng)做了分組,同時攜帶最新時間,剩下要做的就是級聯(lián)查詢,讓時間等于最新時間,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
朔望魔刃 閱讀(1108)
評論(0) 編輯 收藏 所屬分類:
java