setResulttransformer过期NativeQueryImpl,cannot be cast to org.hibernate.query.internal.NativeQueryImpl
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相关推荐
- JPA查询——setResultTransformer过期替换
JPA的setResultTransformer方法过期替换 Query query = getEntityManager().createNativeQuery(sql); query.unwrap ...
- 一文掌握Hibernate
文章目录 1.Hibernate概述 2.Hibernate 架构 3.Hibernate 配置 4.Hibernate 查询操作 5.Hibernate 缓存操作 6.Hibernate 批处理 7 ...
- 自我复盘-20210820
近期在做一个双数据源同步的需求,项目主要采用springboot,通过JPA操作数据库,由于好久没玩hibernate了,凭借模糊的记忆加上Google大法,总算是有了一个大体上的熟系,现将开发过程中 ...
- Hibernate升级到5.4.18.final的过程踩过的坑
目录 1. 抛javax.persistence.TransactionRequiredException异常,在没有事务时 2. 执行save/insert/delete相关的DB操作后,没有生效也 ...
- 写SpringBoot项目的时候,报错Ordinal parameter not bound
文章目录 一.背景 二.解决 一.背景 使用JPA更新数据的时候,做Junit始终报错Ordinal parameter not bound,异常信息是 org.springframework.dao ...
- org.hibernate.QueryException: Unmatched braces for alias path 解决方案
org.hibernate.QueryException: Unmatched braces for alias path Caused by: org.hibernate.QueryExceptio ...
- entityManager.createNativeQuery查询返回实体或vo及提示setResultTransformer过时处理
想使用entityManager.createNativeQuery查询返回实体或vo, public XxVo getXx(){ String sql =""; Query qu ...
- @Modifying注解和@Transactional注解?
JPA中自定义的插入.更新.删除方法为什么要添加@Modifying注解和@Transactional注解? 前几天,有个同事在使用JPA的自定义SQL方法时,程序一直报异常,捣鼓了半天也没能解决,咨 ...
- JPA 已作废的SQLQuery.class、setResultTransformer方法替换
hibernate 5.2 之后,SQLQuery.class.setResultTransformer方法已作废,其用法如下: Query query = entityManager.createN ...
最新文章
- 【luogu3398】 仓鼠找sugar [LCA 倍增]
- 浮动元素会引起的问题和你的解决办法
- 万引大佬自曝这样被MIT拒掉:“系里不喜欢你”,找校长对峙后悟了
- 悟透 JavaScript
- 收音机磁棒天线4根接法_无线电科技基础:无声的海上GPS导航 天线接收的方向性...
- Linux-vmware tools安装与cdrom挂载
- 能效超标,11家数据中心被集中约谈学习!
- “多态枚举”数值如何判断?
- 一个excel文档里复制黏贴另外表单跟着变动_利用Excel连接Power BI,实现PPT报告自动输出...
- r 语言roc_R语言画ROC曲线总结
- 计算机概论在线阅读,计算器概论 or 计算机概论
- 什么是分布式_什么是分布式系统,如何学习分布式系统?
- NetOps Defined
- SQL Server Join方式
- 核酸检测小程序实战教程
- 5-前置处理器:Pre Processors
- 离散数学第7章欧拉图,哈密顿图
- Excel怎么区分中文英文
- NRF24L01 无线模块
- 编程入门:零基础想要学好C/C++编程?那你一定要看看这五个步骤!
热门文章
- Ubuntu下修改字体
- matlab使用hough变换函数进行车道检测
- Aspose.Cells 单元格格式设置 如设置为数字
- 南京java架构师工资_java架构师工资一般是多少?怎么提升才能获得高薪?
- P4197 【Peaks】克鲁斯卡尔重构树详解
- 【LeetCode102. 二叉树的层序遍历】——层序遍历
- python生成桌面路径(winreg)
- BlockingQueue drainTo()
- component is not authorized by this account hint: [B3GVCa0189e575] 错误解决?
- html怎么修改版权信息,微擎修改免费版标题、logo、页脚版权信息教程(仅供学习)...