Spring Data Jpa使用——select查詢2個字符串進行封裝Map處理


開發環境

  • Spring Boot 2.4
  • Hibernate 5.4
  • Spring Data Jpa 2.2

背景

  • 在一次查詢中,需要使用group by 對查詢數據分組查詢,返回兩個字符串類型的數據。使用Spring Data Jpa操作,沒有找到解封裝成List對象的方法,后來使用的Hibernate進行實現。

實現方法

  • 使用的查詢SQL如下
select f.farm_uid as farmUid,f.client_user_mid as clientUserMid from m_shelf_info f group by f.client_user_mid,f.farm_uid
  •  最終代碼如下
/**
* 獲取場地和客戶
*/
public List<ShelfInfoTable> getFarmAndCustomerQuery(){
Query query = entityManager.createNativeQuery("select f.farm_uid as farmUid,f.client_user_mid as clientUserMid from m_shelf_info f group by f.client_user_mid,f.farm_uid");
//將查詢結果中的每一個對象轉成map
query.unwrap(NativeQueryImpl.class).setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP);

List rows = query.getResultList();
List<ShelfInfoTable> shelfInfoTableList = new LinkedList<>();
for (Object obj : rows) {
Map<String,String> row = (Map<String,String>) obj;

//封裝想要的實體
ShelfInfoTable shelfInfoTable = new ShelfInfoTable();
shelfInfoTable.setFarmUid(row.get("farmUid"));
shelfInfoTable.setClientUserMid(row.get("clientUserMid"));
shelfInfoTableList.add(shelfInfoTable);
}

return shelfInfoTableList;
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM