当前负责的项目使用的是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包含冒号相关推荐

  1. MySQL查询 json 字段中是否包含某个value

    MySQL查询 json 字段中是否包含某个value 方法一: 1.简单版本 :查询json的key SELECT * FROM 表名 where 字段名 -> '$.json中的key' = ...

  2. hibernate mysql 时间比较_Hibernate中HQL函数汇总及获取当前时间进行比较举例

    在很多时候,我们负责的项目中,在数据访问层(DAO层)通常我们会使用sql语句或者hql语句,而在我们使用hql语句拼接时有时会报错,通常的原因是:我们使用了标准的sql语句,开启的确是hiberna ...

  3. java 语法 冒号_java中生僻的冒号跳转语法

    JAVA中冒号的一种用法,很少被人提及,我也从来没使用过.以前在一本书中看过的这种,该作者不推荐使用,今天闲了翻源码在String中看到: 定义标记scan: 括号中的内容如果遇到 break sca ...

  4. mysql查询注意_mysql中sql查询使用注意

    1.注意DESC关键字仅适用于在它前面的列名(birth):不影响species列的排序顺序. SELECT name, species, birth FROM petORDER BY species ...

  5. mysql 反向匹配子串,Mysql 模糊匹配(字符串str中是否包含子字符串substr)

    1.LIKE 通常与 % 一同使用,类似于一个元字符的搜索.若substr不在str中,则返回0. SELECT 'test' LIKE '%e%' as `ret`; # 1 SELECT 'tes ...

  6. mysql中以下正确的sql是_总结MySQL中SQL语法的使用

    --where子句操作符: where子句操作符 = 等于 <> 不等于(标准语法) != 不等于(非标准语法,可移植性差) < 小于 <= 小于等于 > 大于 > ...

  7. MySQL查询数据表中数据记录(包括多表查询)

    MySQL查询数据表中数据记录(包括多表查询) 在MySQL中创建数据库的目的是为了使用其中的数据. 使用select查询语句可以从数据库中把数据查询出来. select语句的语法格式如下: sele ...

  8. [Mysql] 聚集函数:NULL是否包含在内(包括count(1)和count(*)的比较)

    本篇博客主要整理并亲自验证一下count(*), count(1)和count(column-name)的区别,本部的内容主要参考stackoverflow,除此之外,对聚集函数中是否包含NULL值进 ...

  9. python中的[:-1] [:,:-1] python矩阵numpy中array的冒号 逗号

    如何理解[:-1]  [:,:-1] data = np.loadtxt('data.csv', delimiter = ',')     X = data[:,:-1]    #取所有行,取列到倒数 ...

最新文章

  1. 一文了解贪心算法和回溯算法在前端中的应用
  2. 开放平台_XAuth
  3. [Wix] 搞了这么久才知道Wix怎么装
  4. python 字符集utf-8|精简版(三分钟了解)
  5. 目前我们所说的个人商用计算机属于,计算机组成原理试题库(大专生用,共20份,有答案)...
  6. HCIE Security 防火墙反病毒 备考笔记(幕布)
  7. Java项目:药品管理系统(java+SSM+html+jQuery+Tomcat+mysql)
  8. FIT2CLOUD飞致云成为Kubernetes认证服务提供商(KCSP)
  9. ADF中在jspx页面加载的阶段添加自己的代码
  10. iOS:iOS开发非常全的三方库、插件等等
  11. 笔记本电脑计算机无法显示u盘,小编告诉你为什么笔记本电脑识别不了u盘
  12. 华为Android10怎样root,华为M2平板10.0怎么ROOT 华为M2超级权限图文教程
  13. 深度学习目标检测在游戏领域的应用
  14. 安装apache出错
  15. Blender 3D Architecture, Buildings, and Scenery
  16. 解决ORA-01111, ORA-01110, ORA-01157
  17. matlab怎么伯努利分布,伯努利分布 Bernoulli distribution
  18. [指北针分类信息软件 v1.5.2.1] 全自动分类信息软件+高效稳定建立SEO外部链接
  19. 哄女朋友开心的html源码,很好玩的代码,哄女票开心用
  20. Instrumentation框架分析及其使用

热门文章

  1. HubbleDotNet 开源全文搜索数据库项目--为数据库现有表或视图建立全文索引(三) 多表关联全文索引模式...
  2. MD5加密解密帮助类
  3. 七天学会ASP.NET MVC (一)——深入理解ASP.NET MVC
  4. centso7 install Mariadb
  5. Mac OS X Git安装教程
  6. WCF基础 (续 暴露元数据交换节点)
  7. nagios视频教程【原创】
  8. 最新maven插件的安装
  9. linux 内核钩子 khook 项目介绍
  10. python 获取mysql中所有数据库名称