@Query("select s.userid,s.playeddury,s.courseid,s.videoid,l.name as videoname,l.clicknum,l.uploadtime,l.downloadnum,l.imahttppath,l.vidhttppath,l.recommend from AppStudyRecodTable s,LoadVideoTable l where s.userid = ? and l.id = s.videoid")
public List<Map<String,Object>> findByUserid(int userid);
我連查了兩張表,但是回傳值是什么,平時回傳值都是定義好的Entiry,但是連表了,就不可能回傳Entity了。
于是我回傳了List<Map<>>,但是結果并不理想。回傳如下
{
"errormsg": "成功",
"data": [
[
1000,
"23",
2,
8,
"敲鼓",
5,
"2016-12-13 04:35:19\n",
0,
"http://1608k8d317.iask.in:80/1480667720159-c100.png",
"http://1608k8d317.iask.in:80/1480667718639-[陳二G的YN人生2]第01集_hd.mp4",
"0"
],
[
1000,
"45",
1,
4,
"稅務232",
1,
"2016-12-02 04:35:19",
0,
"http://1608k8d317.iask.in:80/1480667720159-c100.png",
"http://1608k8d317.iask.in:80/1480667718639-[陳二G的YN人生2]第01集_hd.mp4",
"0"
]
],
"errorcode": "0"
}
這是一個list啊,沒有map對應的key,如何讓他回傳map,map的key是select s.userid,s.playeddury,中的userid?望高手指點
uj5u.com熱心網友回復:
用new map。@Query("select new map(s.userid,s.playeddury,s.courseid,s.videoid,l.name as videoname,l.clicknum,l.uploadtime,l.downloadnum,l.imahttppath,l.vidhttppath,l.recommend) from AppStudyRecodTable s,LoadVideoTable l where s.userid = ? and l.id = s.videoid")
public List<Map<String,Object>> findByUserid(int userid);
uj5u.com熱心網友回復:
請問解決了嗎 我也是同樣的問題uj5u.com熱心網友回復:
樓主解決了嗎uj5u.com熱心網友回復:
沒解決,我只能在集成一套Mybatis架構了。難受uj5u.com熱心網友回復:
好不容易看到一個類似的。。。結果樓主這也沒答案
uj5u.com熱心網友回復:
不行,回傳不了。型別安全限制了。。。。真得用其他方法,或者回傳 Object再一個一個強轉uj5u.com熱心網友回復:
同問怎么解決的啊?我也遇到這個問題了
uj5u.com熱心網友回復:
回傳List<Object[]>呢?uj5u.com熱心網友回復:
可以用List<?> findByUserid(int userid) ,最后進行轉換獲取需要的值uj5u.com熱心網友回復:
@Query("select new map(s.userid as userid,...")
后面的自己補,不寫as xxxx,出來的map的key值是1,2,3.....,大體是這樣,正好昨晚也碰這樣的問題
uj5u.com熱心網友回復:
List<Company> company = companyService.findAllDemp();JSONArray jsonArray = JSONArray.fromObject(company);
強轉成json不就可以了
uj5u.com熱心網友回復:
AppStudyRecodTable ,LoadVideoTable 兩張表應該在物體類的時候建立關系,如果是一對一的關系的話在 AppStudyRecodTable物體類中加@OneToOne
@JoinColumn(name = "video_id")
private LoadVideoTable loadVideoTable;
然后再查詢的時候直接List<AppStudyRecodTable> findByUserId(String id);就行了,要獲取LoadVideoTable表中的內容創建AppStudyRecodTable物件.getloadVideoTable,,,,
uj5u.com熱心網友回復:
@Query(value = "XXXXXX",nativeQuery = true)List<Map> getSysPermissionByUserName();
我用 回傳list<map> 解決了
uj5u.com熱心網友回復:
sql取出一個List<Object>。control拿到這個list,將Object型別轉成Map型別
可以參考這段代碼
List<Object> resultList = new ArrayList<>();
List<Object[]> result = XXXXService.selectListXXX(Id);
for (Object row : result) {
Object[] rowArray = (Object[]) row;
Map<String, Object> mapArr = new HashMap<String, Object>();
mapArr.put("id", rowArray[0]);
mapArr.put("name", rowArray[1]);
mapArr.put("sex", rowArray[2]);
resultList.add(mapArr);
}
return resultList;
這樣前臺取到的List就是key:value型別的了
{
"id": "111",
"name": abc,
"sex": 1
},
{
"id": "222",
"name": abc,
"sex": 0
},
要不建一個DTO,用DTO去接這個List應該也可以
uj5u.com熱心網友回復:
照著一樓的寫法報錯,UnsatisfiedDependencyException,誰有好點的處理方法么uj5u.com熱心網友回復:
我把new map換成 new MAP就不報錯了,也可以檢查下欄位是不是都是物體里面定義的欄位,畢竟這是jpa提供的實作,估計要遵守某些規范uj5u.com熱心網友回復:
這樣即可@Query(value = "select new com.kevin.demo2.Model.UserVo(u.id,u.name,c.cityName) from TkUser u LEFT JOIN " +
"UserCity uc on u.id = uc.userId left join City c on c.id = uc.cityId where u.age >?1")
List<UserVo> findjjj(int age);
uj5u.com熱心網友回復:
使用別名就可以正常回傳。如下@Query(value="https://bbs.csdn.net/topics/select s.userid as userid,s.playeddury as playeddury from AppStudyRecodTable s,LoadVideoTable l where s.userid = ? and l.id = s.videoid",nativeQuery=true)
public List<Map<String,Object>> findByUserid(int userid);
uj5u.com熱心網友回復:
org.springframework.orm.jpa.JpaSystemException: Unknown entity: javax.persistence.Tuple; nested exception is org.hibernate.MappingException: Unknown entity: javax.persistence.Tuple這個錯是因為什么呢
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/250961.html
標籤:Web 開發
上一篇:ClassNotFoundException: org.springframework.aop.framework.AopProxyUtils報錯
