JPA的setResultTransformer方法过期替换为NativeQueryImpl

@SuppressWarnings("unchecked")@Overridepublic <T> List<T> nativeQueryListMap(String nativeSql, Object... params) {Query q = createNativeQuery(nativeSql, params);q.unwrap(org.hibernate.SQLQuery.class).setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP);return q.getResultList();}
@SuppressWarnings("unchecked")@Overridepublic <T> List<T> nativeQueryListMap(String nativeSql, Object... params) {Query q = createNativeQuery(nativeSql, params);q.unwrap(NativeQueryImpl.class).setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP);return q.getResultList();}

执行报错cannot be cast to org.hibernate.query.internal.NativeQueryImpl:

改为javax.persistence.Query:

 @SuppressWarnings("unchecked")@Overridepublic <T> List<T> nativeQueryListMap(String nativeSql, Object... params) {javax.persistence.Query q = createNativeQuery(nativeSql, params);q.unwrap(NativeQueryImpl.class).setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP);return q.getResultList();}

原因很简单,通过后台报错就可以得出:createQuery方法生成的query对象是org.hibernate.jpa.internal.QueryImpl类型的,在这里无法强制转换成NativeQueryImpl类型的,所以将其转换成javax.persistence.Query类型的即可.

或者@Transactional(readOnly = true)

/*** ClassName:DynamicQueryImpl <br/>* Function: 动态jpql/nativesql查询的实现类<br/>* Date: 2020年2月28日 上午3:56:31 <br/>* * @author bill@sh-stt.com* @version* @since JDK 1.8* @see*/@Repository
@Transactional(readOnly = true)
public class DynamicQueryImpl implements DynamicQuery {Logger logger = LoggerFactory.getLogger(DynamicQueryImpl.class);

在将事务设置成只读后,相当于将数据库设置成只读数据库,此时若要进行写的操作,会出现错误

setResulttransformer过期NativeQueryImpl,cannot be cast to org.hibernate.query.internal.NativeQueryImpl相关推荐

  1. JPA查询——setResultTransformer过期替换

    JPA的setResultTransformer方法过期替换 Query query = getEntityManager().createNativeQuery(sql); query.unwrap ...

  2. 一文掌握Hibernate

    文章目录 1.Hibernate概述 2.Hibernate 架构 3.Hibernate 配置 4.Hibernate 查询操作 5.Hibernate 缓存操作 6.Hibernate 批处理 7 ...

  3. 自我复盘-20210820

    近期在做一个双数据源同步的需求,项目主要采用springboot,通过JPA操作数据库,由于好久没玩hibernate了,凭借模糊的记忆加上Google大法,总算是有了一个大体上的熟系,现将开发过程中 ...

  4. Hibernate升级到5.4.18.final的过程踩过的坑

    目录 1. 抛javax.persistence.TransactionRequiredException异常,在没有事务时 2. 执行save/insert/delete相关的DB操作后,没有生效也 ...

  5. 写SpringBoot项目的时候,报错Ordinal parameter not bound

    文章目录 一.背景 二.解决 一.背景 使用JPA更新数据的时候,做Junit始终报错Ordinal parameter not bound,异常信息是 org.springframework.dao ...

  6. org.hibernate.QueryException: Unmatched braces for alias path 解决方案

    org.hibernate.QueryException: Unmatched braces for alias path Caused by: org.hibernate.QueryExceptio ...

  7. entityManager.createNativeQuery查询返回实体或vo及提示setResultTransformer过时处理

    想使用entityManager.createNativeQuery查询返回实体或vo, public XxVo getXx(){ String sql =""; Query qu ...

  8. @Modifying注解和@Transactional注解?

    JPA中自定义的插入.更新.删除方法为什么要添加@Modifying注解和@Transactional注解? 前几天,有个同事在使用JPA的自定义SQL方法时,程序一直报异常,捣鼓了半天也没能解决,咨 ...

  9. JPA 已作废的SQLQuery.class、setResultTransformer方法替换

    hibernate 5.2 之后,SQLQuery.class.setResultTransformer方法已作废,其用法如下: Query query = entityManager.createN ...

最新文章

  1. 【luogu3398】 仓鼠找sugar [LCA 倍增]
  2. 浮动元素会引起的问题和你的解决办法
  3. 万引大佬自曝这样被MIT拒掉:“系里不喜欢你”,找校长对峙后悟了
  4. 悟透 JavaScript
  5. 收音机磁棒天线4根接法_无线电科技基础:无声的海上GPS导航 天线接收的方向性...
  6. Linux-vmware tools安装与cdrom挂载
  7. 能效超标,11家数据中心被集中约谈学习!
  8. “多态枚举”数值如何判断?
  9. 一个excel文档里复制黏贴另外表单跟着变动_利用Excel连接Power BI,实现PPT报告自动输出...
  10. r 语言roc_R语言画ROC曲线总结
  11. 计算机概论在线阅读,计算器概论 or 计算机概论
  12. 什么是分布式_什么是分布式系统,如何学习分布式系统?
  13. NetOps Defined
  14. SQL Server Join方式
  15. 核酸检测小程序实战教程
  16. 5-前置处理器:Pre Processors
  17. 离散数学第7章欧拉图,哈密顿图
  18. Excel怎么区分中文英文
  19. NRF24L01 无线模块
  20. 编程入门:零基础想要学好C/C++编程?那你一定要看看这五个步骤!

热门文章

  1. Ubuntu下修改字体
  2. matlab使用hough变换函数进行车道检测
  3. Aspose.Cells 单元格格式设置 如设置为数字
  4. 南京java架构师工资_java架构师工资一般是多少?怎么提升才能获得高薪?
  5. P4197 【Peaks】克鲁斯卡尔重构树详解
  6. 【LeetCode102. 二叉树的层序遍历】——层序遍历
  7. python生成桌面路径(winreg)
  8. BlockingQueue drainTo()
  9. component is not authorized by this account hint: [B3GVCa0189e575] 错误解决?
  10. html怎么修改版权信息,微擎修改免费版标题、logo、页脚版权信息教程(仅供学习)...