`
asgab
  • 浏览: 42407 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

ibatis诡异的错误

    博客分类:
  • db
阅读更多

错误如下:

  com.ibatis.common.jdbc.exception.NestedSQLException:   

--- The error occurred in config/CTS_CHECK_TICKET_ET.xml.  

--- The error occurred while applying a parameter map.  

--- Check the CTS_CHECK_TICKET_ET.selectRtorderDetailByRtorderid-InlineParameterMap.  

--- Check the statement (query failed).  

--- Cause: java.sql.SQLException: ORA-01031: insufficient privileges


表面上看是oracle权限问题。

但实际不是如此,报错的sql如下:
<select id="selectRtorderDetailByRtorderid" parameterClass="CheckTicketMap" resultMap="RTOrderDetailResult" >
  SELECT PLEAVE_DT, ARRIVE_PERIOD, RLEAVE_DT, ALTER_REASON_CONTENT, 
           RTORDER_ID, RTORDER_CODE, REMARK, CREATOR, CREATE_DT, PTHALL_ID, 
           ORDER_ID, ORDER_CODE, LINE_ID, TICKET_GATE_ID, BC_ORDERATTR_ID, BC_ORDERTYPE_ID, 
           BC_ORDERMARKET_ID, BC_ORDERMANAGE_ID, BC_ROADTYPE_ID, ORDER_ALTER_TYPE, 
           BC_ALTERREASON_ID, ORDER_NAME,CHECKIN_STATUS,
           PLEAVE_DATE, PLEAVE_TIME, 
           BEGIN_STATION_ID, END_STATION_ID, LINE_SPACE, LINE_NAME, 
           BEGINSTATION_NAME, ENDSTATION_NAME, 
           PASSAGE_NAME, TICKET_GATE_NAME, 
           BUS_ID, LICENSE_ID, BC_BUSGRADE_ID, BC_BUSTYPE_ID, DRIVER_LIST,
           CARRIER_NAME, QUALITY_SUM, UNSALED_SEAT, ARRIVE_PERIODSTR, PASSAGE_ID , rownum rr,
           stationPrint,full_COUNT,half_COUNT,PRICE_FULL,PRICE_Semi
       from (
             SELECT BR.PLEAVE_DT, BR.ARRIVE_PERIOD, BR.RLEAVE_DT, BR.ALTER_REASON_CONTENT, 
                   BR.RTORDER_ID, BR.RTORDER_CODE, BR.REMARK, BR.CREATOR, BR.CREATE_DT, BR.PTHALL_ID, 
                   BR.ORDER_ID, BO.ORDER_CODE, BR.LINE_ID, BR.TICKET_GATE_ID, BR.BC_ORDERATTR_ID, BR.BC_ORDERTYPE_ID, 
                   BR.BC_ORDERMARKET_ID, BR.BC_ORDERMANAGE_ID, BR.BC_ROADTYPE_ID, BR.ORDER_ALTER_TYPE, 
                   BR.BC_ALTERREASON_ID, BR.ORDER_NAME,BR.CHECKIN_STATUS,
                   BOS_GETDRIVERIDS_FN(BR.RTORDER_ID) DRIVER_LIST,
                   SUBSTR(BR.PLEAVE_DT, 0, 10) PLEAVE_DATE, SUBSTR(BR.PLEAVE_DT, 11) PLEAVE_TIME,
                   BL.BEGIN_STATION_ID, BL.END_STATION_ID, BL.LINE_SPACE, BL.LINE_NAME,
                   BSB.STATION_NAME BEGINSTATION_NAME, BSE.STATION_NAME ENDSTATION_NAME,
                   BT.PASSAGE_ID, BP.PASSAGE_NAME, BT.TICKET_GATE_NAME,
                   DECODE(BR.ARRIVE_PERIOD, NULL, NULL, 
                        DECODE(SIGN(60-BR.ARRIVE_PERIOD), 1, '', TRUNC(BR.ARRIVE_PERIOD/60) || '小时') ||
                        DECODE(SIGN(MOD(BR.ARRIVE_PERIOD, 60)), 1, MOD(BR.ARRIVE_PERIOD, 60) || '分')) ARRIVE_PERIODSTR, 
                   VB.BUS_ID, VB.LICENSE_ID, VB.BC_BUSGRADE_ID, VB.BC_BUSTYPE_ID, 
                   VB.CARRIER_NAME, VB.QUALITY_SUM, NVL(VB.UNSALED_SEAT,0) AS UNSALED_SEAT,
                   T1.END_STATION_ID stationPrint, T1.full_COUNT,T1.half_COUNT,T2.PRICE_FULL,T2.Price_Semi
            FROM   BOS_RTORDER_ET BR
            left outer JOIN (SELECT END_STATION_ID,RTORDER_ID,
                        SUM(DECODE(Ticket_Type, '24001', 1, 0)) full_COUNT,
                         SUM(DECODE(Ticket_Type, '24002', 1, 0)) half_COUNT
                         FROM (select END_STATION_ID,Ticket_Type,RTORDER_ID
                          from STS_TICKET_ET
                         where TICKET_STATUS = '22001'
                         and Is_Check = '1'
                         union all
                 select END_STATION_ID,Ticket_Type,RTORDER_ID
                     from STS_TICKET_OTHER_ET
                         where  IS_CHECK = '1'
                          )
              GROUP BY END_STATION_ID,RTORDER_ID) T1 on BR.RTORDER_ID = T1.RTORDER_ID
left  join  sts_rtorder_price_et T2 
             on T1.END_STATION_ID =T2.station_id and T2.RTORDER_ID=BR.RTORDER_ID
            INNER JOIN BOS_LINE_ET BL ON BL.LINE_ID = BR.LINE_ID
            INNER JOIN BOS_TICKET_GATE_ET BT ON BT.TICKET_GATE_ID = BR.TICKET_GATE_ID
            LEFT JOIN BOS_STATION_ET BSB ON BSB.STATION_ID = BL.BEGIN_STATION_ID
            LEFT JOIN BOS_STATION_ET BSE ON BSE.STATION_ID = BL.END_STATION_ID
            LEFT JOIN BOS_PASSAGE_ET BP ON BP.PASSAGE_ID = BT.PASSAGE_ID
            INNER JOIN BOS_RTORDBUS_VIEW VB ON VB.RTORDER_ID = BR.RTORDER_ID
            LEFT JOIN BOS_ORDER_ET BO ON BO.ORDER_ID = BR.ORDER_ID
        <![CDATA[
          WHERE  BR.RTORDER_ID=#rtorderId#
        ]]>
       )
    </select>


最后解决如下:
查询sql中 
        <![CDATA[
          WHERE  BR.RTORDER_ID=#rtorderId#
        ]]>
并没有特殊字符,不需要用‘<![CDATA[’ 和‘ ]]>’包裹。

删掉‘<![CDATA[’ 和‘ ]]>’后问题解决。但依然不明其中道理。

我就在想,这会不会是ibatis的一个bug呢,有时候画蛇添足并不是件好事。
分享到:
评论

相关推荐

    ibatis的错误总结

    ibatis的错误总结

    iBatis各种文档集合

    共11个文档,pdf格式和word格式都有。 自己整理的对iBATIS框架的一些简单理论知识,有助于进一步了解和深入学习iBATIS框架,错误或不当之处,在所难免。

    ibatis实战

    此资源是ibatis实战的第二个压缩分卷,因为资源较大,所以被分成两份,在下载后请下载第一个压缩分卷,否则会出现解压错误。

    IBatis多数据库,可通过配置指定不同的实体使用不同的数据库

    1.每个实体类需要配置各自的“SqlMap.config”在“config/SysConfig.xml”中,SqlMap,db1.Db1SqlMap就是“ibatis/db1/Db1SqlMap.config”,不同的db将分配...4.通过log4net记录错误日志,出错时会打印执行的sql语句。

    配置ibatis3.0时,发生的小错误

    NULL 博文链接:https://king2009163-163-com.iteye.com/blog/657629

    持久层框架ibatis学习笔记

    这篇iBatis 学习笔记是跟着传智播客的视频学习整理的,理解上难免有些错误,请以视频为 根本,有些地方笔记中没有整理到,因为这是我之后看着自己做的工程项目总结的,和视频 不完全一致。请谅解。

    iBATIS SQL Maps 开发指南

    如果您发现其中的错误,或是觉得某些地方难以理解,请发email 至clinton.begin@ibatis.com 。 本文是《iBatis SQL Maps Developer Guide》的中文版,仅供读者参考,最权威的应以Clinton Begin的官方文档为准。如果...

    ibatis开发人员教程

    适用于开发人员的一个ibatis教程。里面还讲解了在应用ibatis的过程中容易犯的错误

    spring+struts2+ibatis简单登录实例--特别适新人学习

    一个简单的spring+struts+ibatis整合的实例,实现了用户登录,用户登录成功则显示欢迎信息,失败则显示用户名或密码错误,该实例非常简单基础,特别适合新人学习,工程包含了必要的资源包,部署到服务器中及可运行,...

    ibatis源码+api文档+jar包

    在csdn找它一上午花了31分,全都不行,还是从其他网上找到的,贡献出来, 各位注意如果你要看源码,最好也是用本zip包中的jar,不然debug看源码时,会出莫名其妙的错误

    ibatis 开发指南(pdf)

    ibatis 开发指南 ibatis Quick Start............................................................................................ 5 准备工作...........................................................

    spring+struts2+ibatis简单登录实例--特别适新人学习(修正版)

    一个简单的spring+struts+ibatis整合的实例,实现了用户登录,用户登录成功则显示欢迎信息,失败则显示用户名或密码错误,该实例非常简单基础,特别适合新人学习,工程包含了必要的资源包,部署到服务器中及可运行,...

    Mybatis报错: org.apache.ibatis.exceptions.PersistenceException解决办法

    主要介绍了Mybatis报错: org.apache.ibatis.exceptions.PersistenceException解决办法的相关资料,需要的朋友可以参考下

    [iBatis.Net系列]目录导航

    时间过去一年多了,虽然在这个系列中可能还会存在一些错误,虽然这个系列似乎也没有一个结束篇,我本人也已经很久没有使用iBatis了,也可能无法来继续这个系列了。但是我想,已经存在的这些文字,可能对一些刚要开始...

    ibatics 官方网站正确实例

    ①插入操作时会报SQL错误,原因如下 com.mydomain.data.Account.xml文件的insert部分ACC_EMIAL的后面没有括号,加上即可解决这个问题。 具体请参考网上的一篇博客:...

    mybatisplus报Invalid bound statement (not found)错误的解决方法

    搭建项目时使用了mybatisplus,项目能够正常启动,但在调用mapper方法查询数据库时报Invalid bound statement (not found)错误。本文给大家分享解决方案,感兴趣的朋友跟随小编一起看看吧

    AppFuse学习笔记(J2EE入门级框架)

    Appfuse是Matt Raible 开发的一个指导性的入门级J2EE框架,它对如何集成流行的Spring、Hibernate、iBatis、Struts、xDcolet、Junit、Taperstry、JSF等基础框架给出了示范。在持久层,AppFuse采用了Hibernate O/R映射...

    Appfuse开发教程

    Appfuse是Matt Raible 开发的一个指导性的入门级J2EE框架,它继承了流行的Spring、Hibernate、ibatis、struts、Xdcolet、junit等基础框架,最新的1.7版更是提供了对Taperstry和JSF的支持。在持久层,AppFuse采用了...

Global site tag (gtag.js) - Google Analytics