[英]How to get List<Map<String,Object>> from the result set of Hibernate?
我正在使用休眠來獲得這樣的結果,
項目 ID - 123 、 111 、 134
計數 - 2 , 5 ,6
這是我的道層 -
@Query("SELECT project_id,COUNT(*) FROM lead_master WHERE vendor_id = ?1 and source = 'share' group by project_id ")
List<Map<String,Object>> getProjectLead(userId);
輸出 - 我想要地圖列表,其中 project_id 應該是鍵,計數應該是與該鍵關聯的對象。所以它會像 -
123 - 2
111 - 5
134 - 6
您可以ResultTransformer
使用ResultTransformer
:
(List<Map<String, Object>>) entityManager.createNativeQuery(
"SELECT project_id, COUNT(*) FROM lead_master WHERE vendor_id = :userId and source = 'share' group by project_id "
)
.setParameter("userId", userId)
.unwrap(org.hibernate.query.Query.class)
.setResultTransformer(
new ResultTransformer() {
@Override
public Object transformTuple(Object[] tuple, String[] aliases) { // 2.
return new HashMap.of((String) tuple[0], tuple[1]);
}
@Override
public List transformList(List collection) {
return collection;
}
}
)
.getResultList();
我只是簡單地從 jpa 迭代地圖列表,然后獲取 project_id、count 的值,然后使用新地圖存儲鍵和值。我希望它會幫助你。
Map<String,Object> map=new HashMap<>();
List<Map<String, Object>> res = samplerepository.getProjectLead(userId);
res.forEach(action -> {
String key = (String) action.get("project_id");
BigInteger value = (BigInteger) action.get("count");
map.put(key, value);
});
System.out.println("size : " + map.toString());
Output will be :: {111=5, 123=2, 134=6}
謝謝,
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.