PL/SQL 的SQL语句可以执行,但是放在hibernate中,后台打印,出现了错误。

错误的SQL解析:黄色为错误部分

Hibernate: 

    select

        examinee0_.EXAM_YEAR as col_0_0_,

        count(*) as col_1_0_,

        sum(caseexaminee0_.CHECK_FLAGwhen'2'then1else 0end) as col_2_0_

     from

        vet_test.EXAMINEE examinee0_ 

    group by

        examinee0_.EXAM_YEAR 

    order by

        examinee0_.EXAM_YEAR ASC

很明显 ,标黄的地方出错,空格不翼而飞,后台提示ORA-00907: 缺失右括号

经过一番检查!终于发现了问题所在:那就是hibernate的SQL查询翻译器!

Hibernate3.0 采用新的基于ANTLR的HQL/SQL查询翻译器,     
     在hibernate的配置文件中,hibernate.query.factory_class     
     属性用来选择查询翻译器。     
     (1)选择Hibernate3.0的查询翻译器:     
     hibernate.query.factory_class=     
     org.hibernate.hql.ast.ASTQueryTranslatorFactory     
     (2)选择Hibernate2.1的查询翻译器hibernate.query.factory_class=     
     org.hibernate.hql.classic.ClassicQueryTranslatorFactory

解决方案:

将hibernate.cfg.xml的

<property name="hibernate.query.factory_class">

org.hibernate.hql.classic.ClassicQueryTranslatorFactory

</property>

标蓝色的部分替换成org.hibernate.hql.ast.ASTQueryTranslatorFactory

替换后后台打印解析后的sql:黄色为解析正确后的sql

Hibernate:

select

examinee0_.EXAM_YEAR as col_0_0_,

count(*) as col_1_0_,

sum(case examinee0_.CHECK_FLAG

when '2' then 1

else 0

end) as col_2_0_

from

vet_test.EXAMINEE examinee0_

group by

examinee0_.EXAM_YEAR

order by

examinee0_.EXAM_YEAR ASC

ORA-00907: 缺失右括号(通用解决办法)的更多相关文章

  1. ORA-00907: 缺失右括号 整理解决

    ORA-00907: 缺失右括号 前言 最近在开发过程中使用oracle数据库,在程序中进行查询数据时遇到了“ORA-00907: 缺失右括号”的问题,但是如果直接把sql语句直接在数据库或PL/SQ ...

  2. Oracle创建表格报ORA-00906:缺失左括号错误解决办法

    来源于:http://www.linuxidc.com/Linux/2013-06/85297.htm 解决办法: create table myTable(id number(5,2),name v ...

  3. ORA-00907: 缺失右括号,原因及解决办法整理

    ORA-00907: 缺失右括号,原因及解决办法整理 1 union all中order by 导致缺失右括号 在有union all的子查询中使用了order by,会导致缺失右括号的错误,事实上在 ...

  4. ORA-00907: 缺失右括号问题整理解决

    ORA-00907: 缺失右括号 前言 近期在开发过程中使用oracle数据库,在程序中进行查询数据时遇到了"ORA-00907: 缺失右括号"的问题.可是假设直接把sql语句直接 ...

  5. [转]ORA-00907: 缺失右括号

    转至:http://www.cnblogs.com/Olive116/p/5149680.html ORA-00907: 缺失右括号 前言 最近在开发过程中使用oracle数据库,在程序中进行查询数据 ...

  6. ORA-00907: 缺失右括号

    创建表时出现ORA-00907: 缺失右括号的情况 调整关键字的顺序 CREATE TABLE s_dept(ID PRIMARY KEY NOT NULL NUMBER(7),NAME NOT NU ...

  7. log file sync 等侍值高的一般通用解决办法

    log file sync等待时间发生在redo log从log buffer写入到log file期间. 下面对log file sync做个详细的解释. 何时发生日志写入: 1.commit或者r ...

  8. 【java】oracle好用,但java运行缺失右括号

    可能原因SQL拼接有空格被省略导致sql粘连. 解决办法,扩大拼接或者缩小拼接范围.

  9. echarts中图表过于靠左或靠右的情况解决办法。

    经过好多次尝试,终于在http://blog.csdn.net/ainuser/article/details/76641963中得到解决. grid: { x: '30%', //相当于距离左边效果 ...

随机推荐

  1. JAVA基础——数据流

    DataInputStream 类和DataOutputStream 类 在前面的学习中,我们知道数据流处理的数据都是指字节或字节数组,但实际上很多时候不是这样的,它需要数据流能直接读.写各种各样的j ...

  2. Java随机数使用

    JAVA取随机数的三种方式: Math.random() System.currentTimeMillis() random.nextInt() 废话不多说,看代码: /** *取单个随机数 *Mat ...

  3. fastclick.js插件使用

    引入插件步骤 ①在HTML页面中添加  <script type='application/javascript' src='/path/to/fastclick.js'></scr ...

  4. copy on write

    yl::string CBaseAutopProcessor::AddAuthorizedInfo(const yl::string & strOriginalUrl, const yl::s ...

  5. 零基础入门学习Python(2)--用Python设计第一个游戏

    前言 小甲鱼的Python课程都是围绕着一个个小游戏,进行Python的讲解,由易入难. 小游戏流程图 Created with Raphaël 2.1.2Startprint('---------- ...

  6. SVN CommandLine

    要是SVN命令行用不了的话: 1.SVN装了没? 2.SVN安装时,选项“command line client tools”选了没. 检出: svn checkout [-depth ARG] [- ...

  7. mui.openWindow的html5+和web传参的兼容

    mui.openWindow兼容web&plus环境下的页面传参 背景介绍 刚刚好要写个微信公众号和html5+兼容的项目 发现总是用localStorage传参不是事啊 太不优雅了 想了想还 ...

  8. Python之面向对象上下文管理协议

    Python之面向对象上下文管理协议 析构函数: import time class Open: def __init__(self,filepath,mode='r',encode='utf-8') ...

  9. UVa 1599 理想路径(反向BFS 求最短路径 )

    题意: 给定一个有重边有自环的无向图,n个点(2 <= n <= 100000), m条边(1 <= m <= 200000), 每条边有一个权值, 求从第一个点到n的最少步数 ...

  10. Vue如何使用vue-area-linkage实现地址三级联动效果

    很多时候我们需要使用地址三级联动,即省市区三级联动.网上有很多插件,在此介绍Vue的一款地区联动插件:vue-area-linkage,下面介绍如何使用这个插件实现地址联动效果:         1. ...