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;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」