mysql 包括冒号_hibernate中SQL包含冒号
当前负责的项目使用的是hibernate,而“:”是hibernate的一个占位符,作为预编译使用的,
select tmp.pid from
(select pid, loginTime, @i := @i + 1 i from gms_record_login_game, (select @i := 0) r order by pid, loginTime) tmp
LEFT JOIN
(select pid, loginTime, @j := @j + 1 k from gms_record_login_game, (select @j := 0) r1 order by pid, loginTime) tmp2
on tmp.i + 1 = tmp2.k and tmp.pid = tmp2.pid
WHERE TIMESTAMPDIFF(DAY,DATE_FORMAT(tmp.loginTime,'%Y-%m-%d'),DATE_FORMAT(tmp2.loginTime,'%Y-%m-%d'))>3
GROUP BY tmp.pid
使用HQL查询时报错:Query query = session.createQuery(HQL);
QueryException: unexpected char: '@'
原因:HQL不支持这种查询
解决方案:使用原生SQL查询时报错:SQLQuery query = session.createSQLQuery(SQL);
Space is not allowed after parameter prefix ':'
原因:这是hibernate3.X包之下的一个bug,(参照 id=41741)在hibernate4.X中已经修复。
解决方案:需要对双冒号进行转义,在使用双反斜杠进行转义
select tmp.pid from
(select pid, loginTime, @i \\:= @i + 1 i from gms_record_login_game, (select @i \\:= 0) r order by pid, loginTime) tmp
LEFT JOIN
(select pid, loginTime, @j \\:= @j + 1 k from gms_record_login_game, (select @j \\:= 0) r1 order by pid, loginTime) tmp2
on tmp.i + 1 = tmp2.k and tmp.pid = tmp2.pid
WHERE TIMESTAMPDIFF(DAY,DATE_FORMAT(tmp.loginTime,'%Y-%m-%d'),DATE_FORMAT(tmp2.loginTime,'%Y-%m-%d'))>3
GROUP BY tmp.pid
重点来了修改后依旧没有解决!!!!
后来在stackoverflow看到有人回复
Another solution for those of us who can't make the jump to Hibernate 4.1.3.
Simply use /*'*/:=/*'*/ inside the query. Hibernate code treats everything between ' as a string (ignores it). MySQL on the other hand will ignore everything inside a blockquote and will evaluate the whole expression to an assignement operator.
I know it's quick and dirty, but it get's the job done without stored procedures, interceptors etc.
修改后
select tmp.pid from
(select pid, loginTime, @i /*'*/:=/*'*/ @i + 1 i from gms_record_login_game, (select @i /*'*/:=/*'*/ 0) r order by pid, loginTime) tmp
LEFT JOIN
(select pid, loginTime, @j /*'*/:=/*'*/ @j + 1 k from gms_record_login_game, (select @j /*'*/:=/*'*/ 0) r1 order by pid, loginTime) tmp2
on tmp.i + 1 = tmp2.k and tmp.pid = tmp2.pid
WHERE TIMESTAMPDIFF(DAY,DATE_FORMAT(tmp.loginTime,'%Y-%m-%d'),DATE_FORMAT(tmp2.loginTime,'%Y-%m-%d'))>3
GROUP BY tmp.pid
问题解决
mysql 包括冒号_hibernate中SQL包含冒号相关推荐
- MySQL查询 json 字段中是否包含某个value
MySQL查询 json 字段中是否包含某个value 方法一: 1.简单版本 :查询json的key SELECT * FROM 表名 where 字段名 -> '$.json中的key' = ...
- hibernate mysql 时间比较_Hibernate中HQL函数汇总及获取当前时间进行比较举例
在很多时候,我们负责的项目中,在数据访问层(DAO层)通常我们会使用sql语句或者hql语句,而在我们使用hql语句拼接时有时会报错,通常的原因是:我们使用了标准的sql语句,开启的确是hiberna ...
- java 语法 冒号_java中生僻的冒号跳转语法
JAVA中冒号的一种用法,很少被人提及,我也从来没使用过.以前在一本书中看过的这种,该作者不推荐使用,今天闲了翻源码在String中看到: 定义标记scan: 括号中的内容如果遇到 break sca ...
- mysql查询注意_mysql中sql查询使用注意
1.注意DESC关键字仅适用于在它前面的列名(birth):不影响species列的排序顺序. SELECT name, species, birth FROM petORDER BY species ...
- mysql 反向匹配子串,Mysql 模糊匹配(字符串str中是否包含子字符串substr)
1.LIKE 通常与 % 一同使用,类似于一个元字符的搜索.若substr不在str中,则返回0. SELECT 'test' LIKE '%e%' as `ret`; # 1 SELECT 'tes ...
- mysql中以下正确的sql是_总结MySQL中SQL语法的使用
--where子句操作符: where子句操作符 = 等于 <> 不等于(标准语法) != 不等于(非标准语法,可移植性差) < 小于 <= 小于等于 > 大于 > ...
- MySQL查询数据表中数据记录(包括多表查询)
MySQL查询数据表中数据记录(包括多表查询) 在MySQL中创建数据库的目的是为了使用其中的数据. 使用select查询语句可以从数据库中把数据查询出来. select语句的语法格式如下: sele ...
- [Mysql] 聚集函数:NULL是否包含在内(包括count(1)和count(*)的比较)
本篇博客主要整理并亲自验证一下count(*), count(1)和count(column-name)的区别,本部的内容主要参考stackoverflow,除此之外,对聚集函数中是否包含NULL值进 ...
- python中的[:-1] [:,:-1] python矩阵numpy中array的冒号 逗号
如何理解[:-1] [:,:-1] data = np.loadtxt('data.csv', delimiter = ',') X = data[:,:-1] #取所有行,取列到倒数 ...
最新文章
- 一文了解贪心算法和回溯算法在前端中的应用
- 开放平台_XAuth
- [Wix] 搞了这么久才知道Wix怎么装
- python 字符集utf-8|精简版(三分钟了解)
- 目前我们所说的个人商用计算机属于,计算机组成原理试题库(大专生用,共20份,有答案)...
- HCIE Security 防火墙反病毒 备考笔记(幕布)
- Java项目:药品管理系统(java+SSM+html+jQuery+Tomcat+mysql)
- FIT2CLOUD飞致云成为Kubernetes认证服务提供商(KCSP)
- ADF中在jspx页面加载的阶段添加自己的代码
- iOS:iOS开发非常全的三方库、插件等等
- 笔记本电脑计算机无法显示u盘,小编告诉你为什么笔记本电脑识别不了u盘
- 华为Android10怎样root,华为M2平板10.0怎么ROOT 华为M2超级权限图文教程
- 深度学习目标检测在游戏领域的应用
- 安装apache出错
- Blender 3D Architecture, Buildings, and Scenery
- 解决ORA-01111, ORA-01110, ORA-01157
- matlab怎么伯努利分布,伯努利分布 Bernoulli distribution
- [指北针分类信息软件 v1.5.2.1] 全自动分类信息软件+高效稳定建立SEO外部链接
- 哄女朋友开心的html源码,很好玩的代码,哄女票开心用
- Instrumentation框架分析及其使用
热门文章
- HubbleDotNet 开源全文搜索数据库项目--为数据库现有表或视图建立全文索引(三) 多表关联全文索引模式...
- MD5加密解密帮助类
- 七天学会ASP.NET MVC (一)——深入理解ASP.NET MVC
- centso7 install Mariadb
- Mac OS X Git安装教程
- WCF基础 (续 暴露元数据交换节点)
- nagios视频教程【原创】
- 最新maven插件的安装
- linux 内核钩子 khook 项目介绍
- python 获取mysql中所有数据库名称