springboot hibernate jpa createNativeQuery使用原生sql查询并转换为pojo的model对象,方便好用

开发者福利!热门AI工具限时免费用 购周边即赠Coding Plan Lite,Claude Code、Cursor等20+工具畅享,效率翻倍! 阅读详情
  • 先把entityManager.createNativeQuery生成的jpa接口的Query 强转为hibernateQuery 的query
  • 然后就可以调用hibernate的方法,设置属性,返回的list结果就是Map<String,Object>的有列名称columnName的对象
  • 然后用jackson的ObjectMapper().convertValue把map转换为pojo对象
  • 基本和jdbctemplate一样了
       //第一种 tuple
       Query query = entityManager.createNativeQuery("select * from proj limit 12;",  Tuple.class);
        List<Tuple> tuples = query.getResultList();
        List<Map<String, Object>> result = new ArrayList<>();
        for (Tuple single : tuples) {
            Map<String, Object> tempMap = new HashMap<>();
            for (TupleElement<?> key : single.getElements()) {
                tempMap.put(key.getAlias(), single.get(key));
            }
            result.add(tempMap);
        }

		// tuple 转对象
		List<Proj> projs = tuples.stream().map(t -> {
            Proj p=new Proj();
            p.setId(Long.valueOf(t.get(0, BigInteger.class).toString()));
            p.setProname(t.get("proname", String.class));
            return p;
        }).collect(Collectors.toList());

		//第二种
		org.hibernate.query.Query query = entityManager.createNativeQuery("select * from proj limit 10;").unwrap(org.hibernate.query.Query.class);
        query.setResultTransformer(AliasToEntityMapResultTransformer.INSTANCE);
        List<Map<String,Object>> result = query.list();
告别迷茫!手把手教你用ArcGIS+GTB搞定生态源地MSPA分析(附避坑指南) 本文详细介绍了如何使用ArcGIS和GTB进行生态源地MSPA分析的全流程,包括软件安装、数据预处理、参数设置、结果可视化和常见问题排查。特别针对ArcGIS和GTB组合使用时的常见问题提供了避坑指南,帮助研究者高效完成生态规划任务。 阅读详情

相关推荐

ADS与MATLAB数据互通全指南:从Snp文件导入到TXT导出完整流程

本文详细介绍了在射频与微波工程中,实现ADS与MATLAB高效数据互通的完整流程。核心内容包括利用SPOutput控件、数据显示窗口及测量方程等多种方法,将ADS仿真数据(如S参数)导出为Touchstone或TXT格式,导入MATLAB进行深度分析与可视化;同时指导如何将MATLAB处理后的数据回灌至ADS,用于模型验证与协同仿真,旨在构建自动化、无损的数据交换工作流,提升工程师的工作效率。

pluto的博客 368

springboot jpa 单表聚合

springbootjpa单表聚合 ******************************************* 相关接口 ****************************** public interface EntityManager Query createNativeQuery(String var1); Query ...

weixin_43931625的博客 684

车间数据孤岛终于破了!C#上位机+MQTT打通产线与MES,数据延迟从小时级降到秒级

本文针对工业上位机开发中常见的车间数据与企业管理系统(MES)割裂问题,提出基于C#和MQTT协议的完整解决方案。通过EMQX MQTT Broker实现数据实时双向传输,将质量追溯时间从2小时缩短至10秒,生产计划自动下发,实现秒级数据延迟。方案采用分层解耦架构,支持设备更换和系统升级,核心优势包括低延迟、高可靠性和易扩展性。文章详细介绍了MQTT协议选型理由、整体架构设计、技术选型(EMQX Broker和MqttNet客户端),提供了C#实现代码和部署流程。该方案已在实际产线验证,可有效解决&quo

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 445

Hibernate执行sql返回List<Map

修改前 session.createSQLQuery(sql).list(); 修改后 List<Map<String,Object>> list = session.createSQLQuery(sql).setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP).list(); setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP)这个方法要加队地方 ...

兔老大的胡萝卜 733

Spring Data JPA 动态多表关联查询

一、引言 在JPA中,为了实现某些复杂的sql语句查询可以借助JPA EntityManager来实现该功能,EntityManager是JPA中用于增删改查的接口,它的作用相当于一座桥梁,连接内存中的java对象和数据库的数据存储。 二、实现 下面是简单的Dao层实现 import org.springframework.stereotype.Repository; import org.apache.commons.lang3.StringUtils; import org.springfram

sinat_34974437的博客 883

hibernate使用createNativeQuery做原始的字段映射处理

现在有一张消息message表,一张用户member表,一张中间表member_message。中间表有一个标识flag是否已读等。 在使用hibernate查询的时候,按照对象查询不到的。member_message不是配置@ManyToMany生成的,是单独的一个实体!里面3个字段 这样就要用到JPA原生sql了。因为要查询到flag标识是否已读页面需要展示状态 mes

程序员 1万+

Hibernate5.0 EntityManager转SqlQuery返回Map结果集

Query query = entityManager.createNativeQuery("select * from message"); query.unwrap(org.hibernate.SQLQuery.class) .setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP); List<Map<Strin...

学无止境! 1781

entityManager.createNativeQuery 原生sql获取数据库表转为对象

entityManager.createNativeQuery 原生sql获取数据库表转为对象

szyyyp的专栏 942

让EntityManager的Query返回Map对象

参考:   1、让JPA的Query返回Map对象   2、setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP)    在JPA 2.0 中我们可以使用entityManager.createNativeQuery()来执行原生SQL语句。但当我们查询结果没有对应的实体类时,query.getResultList()返回的是一个Lis...

justdoit 4753

JPA的Query返回Map对象

[size=xx-large]让JPA的Query返回Map对象[/size] 在JPA 2.0 中我们可以使用entityManager.createNativeQuery()来执行原生SQL语句。 但当我们查询结果没有对应实体类时,query.getResultList()返回的是一个List。也就是说每行的数据被作为一个对象数组返回。 常见的用法是这样的: [code=...

zjumty 3421

spring boot 项目关于使用EntityManager.createNativeQuery()做分页查询

需要手动去拼装 数据总量统计sql,数据查询sql。需要将分页信息进行封装。

zhangyahui22的博客 1601

借助JDK8函数式轻松实现JPA原生sql转换为普通pojo或dto等model对象

jpa原生sql查询,.createNativeQuery(sql).getResultList(),但是结果转换需要是Entity才行,对于普通model对象需要自己每次循环list遍历,很不方便 借助函数式编程Function,方便快速实现结果转为普通model对象 import lombok.Data; import lombok.experimental.Accessors; impo...

老专家的博客 1411

springbootHibernateJpa使用NativeQuery原始sql,再用fastjson转pojo

springboot的数据库配置,application-dev.yml spring: datasource: driver-class-name: com.mysql.jdbc.Driver url: jdbc:mysql://192.168.1.222:3306/ppppp?useOldAliasMetadataBehavior=true&useSSL=false...

老专家的博客 1450

Hibernate——Native SQL Queries

Native SQL Queries 本地SQL检索

weixin_44677005的博客 565

EntityManager使用原生查询createNativeQuery把值映射到自定义实体

最近一直在用JPA使用了EntityManager作为基本查询方法。EntityManager可以满足基本的增删改查,但实际上很多时候,是必须采用原生查询的。而且,原生查询的返回值必须和自定义实体相配。 当自定义实体对应原生查询的返回值的时候,一般有2种方法。 1)自定义实体类,可以直接运用createNativeQuery的方法。 接口定义如下: public Query createNativeQuery(String sqlString, Class resultClass) class

wangzhezhilu001的专栏 1万+

java中查询结果集转换为列表,JPA:如何将本机查询结果集转换POJO类集合

我找到了几个解决办法。使用映射实体(JPA2.0)使用JPA2.0不可能将原生查询映射到POJO,只能通过实体完成。例如:Queryquery=em.createNativeQuery("SELECTname,ageFROMjedi_table",Jedi.class);@SuppressWarnings("unchecked")Listitems=(List)query.g...

weixin_34759094的博客 570

JPA 中的entityManager.createNativeQuery()

JPA

weixin_43862793的博客 5859

JPA entityManager.createQuery IN

QuotationV quotationV = entityManager.createQuery("select e from QuotationV e where e.consignmentId = :consignmentId and e.status not in (?1,?2)", QuotationV.class) .setParameter(1, IOQStates.INVALIDED.name()) ...

qq690452074的专栏 1598

jpa原生query_Springboot JPA 执行原生sql ,自定义SQL占位符增加参数

JPA实际上就是Hibernate 的封装,根据Interface方法名,生成对应的方法,也支持Query注解的方式。现在说说执行原生SQL 。注解@Query方式执行原生SQL语句:@Query(value="select user.id from user where user.id =15", nativeQuery = true)public User queryByI...

weixin_39911567的博客 1009

JPA 实现SQL和HQL语句查询(createQuery()、createNativeQuery())

1 createQuery() 使用HQL语句实现查询,以hibernate生成的Bean为对象装入list返回。 EntityManager entityManager; String hql="Select * From User"; List<User> userList=entityManager.createQuery(hql); 2createNativeQuery() 使用SQL语句实现查询。 EntityManager entityManager; String..

旭东怪的博客 1万+

使用spring jpa 时,利用nativeQuery,获取数据,无需新建实体,按照别名返回Json数据

刚开始是这样写的 @Query(value = "SELECT ll.user_id id ,u.catong_img catong_img,ll.locationId location_id,ll.address address,ll.latitude latitude,ll.longitude longitude,ll.update_time upd...

WGH100817的博客 828

Spring Data JPA 查询结果返回map或自定义的实体类

  在JPA中我们可以使用entityManager.createNativeQuery()来执行原生SQL语句,JPA的底层实现都是支持返回Map对象的。例如: EclipseLink 的 query.setHint(QueryHints.RESULT_TYPE, ResultType.Map); Hibernate 的query.unwrap(SQLQuery.c...

ruoxiyun的博客 7043
上一篇: 快速查看springboot项目的所有自启动执行方法
下一篇: springboot的@Autowired底层过程示例demo或者Apache commons-lang3实现
lukezhang-123
博客等级 码龄17年 162粉丝 308原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值