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. js中5中继承方式分析

    //1.借用式继承   把sup的构造函数里的属性方法克隆一份sub实例对象     function Super(){       this.val = 1;       this.fun1 = f ...

  2. [Python3网络爬虫开发实战] 1.9.4-Scrapyd API的安装

    安装好了Scrapyd之后,我们可以直接请求它提供的API来获取当前主机的Scrapy任务运行状况.比如,某台主机的IP为192.168.1.1,则可以直接运行如下命令获取当前主机的所有Scrapy项 ...

  3. 56.fielddata filter的细粒度内存加载控制

    语法: POST /test_index/_mapping/test_type { "properties": { "test_field": { " ...

  4. buf.swap16()

    buf.swap16() 返回:{Buffer} 将 Buffer 解释执行为一个16位的无符号整数数组并以字节顺序交换到位.如果 Buffer 的长度不是16位的倍数,则抛出一个 RangeErro ...

  5. BNUOJ 9870 Contestants Division

    Contestants Division Time Limit: 3000ms Memory Limit: 131072KB This problem will be judged on UVALiv ...

  6. BZOJ 1225: [HNOI2001] 求正整数 高精度+搜索+质数

    题意:给定n求,有n个因子的最小正整数. 题解:水题,zcr都会,我就不说什么了. 因数个数球求法应该知道,将m分解质因数,然后发现 a1^p1*a2^p2....an^pn这样一个式子, (1+p1 ...

  7. [bzoj1485][HNOI2009]有趣的数列_卡特兰数_组合数

    有趣的数列 bzoj-1485 HNOI-2009 题目大意:求所有1~2n的排列满足奇数项递增,偶数项递增.相邻奇数项大于偶数项的序列个数%P. 注释:$1\le n\le 10^6$,$1\le ...

  8. IDEA新手下载及和eclipse,myeclipse的区别

    一:下载安装包,我们可以去官网下载.下载地址:http://www.jetbrains.com/idea/download/#secation=windows 二:IDEA的安装: 1.下载安装包后双 ...

  9. Ubuntu 16.04下SecureCRT无法输入中文的解决思路

    说明:首先网上的方法基本都是不行的,别试了. 但是可以有弥补方案: 1.通过外界的软件编辑好中文,然后粘贴过去.虽然是多了一步,但是也可以输入中文. 2.关于这个问题应该是没有中文字体库导致的,可以尝 ...

  10. 将mysql数据库数据导出为.sql文件

    打开Navicat ,在我们要到处的数据上面右击鼠标,然后弹出的快捷菜单上点击“转储SQL 文件”,在再次弹出的子菜单项中选择第一个“数据跟结构”.