`
asgab
  • 浏览: 44366 次
  • 性别: 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(现被称为MyBatis)的基本概念。ibatis是一种优秀的持久层框架,它消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。ibatis可以使用...

    ibatis api 帮助文档+IBATIS 开发文档

    8. **最佳实践**:指南中还给出了许多使用IBATIS的最佳实践,帮助开发者避免常见错误,提高代码质量。 总的来说,IBATIS API和开发文档是学习和使用IBATIS不可或缺的资源,它们涵盖了IBATIS的所有关键特性和用法,...

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

    在配置iBatis3.0时,可能会遇到各种小错误,这些错误往往由于不正确的配置、依赖缺失或者编码问题导致。以下是对这个主题的详细解释。 首先,让我们了解iBatis是什么。iBatis是一个优秀的持久层框架,它允许开发者...

    ibatis

    - 故障排查技巧,如日志配置和常见错误分析。 总的来说,这个压缩包提供了一个全面学习iBATIS的资源库,适合对Java Web开发有兴趣,特别是想深入了解iBATIS的开发者。结合理论与实践,通过阅读和动手操作,可以深入...

    ibatis的dtd文件

    Ibatis,一个轻量级的Java持久层框架,以其简单易用和高度可配置性而深受开发者喜爱。在Ibatis中,DTD(Document Type Definition)文件扮演着关键角色,它们定义了XML配置文件的结构和规则,使得XML配置能够被正确...

    iBatis从入门到精通

    需要注意的是,SQL语句的结束不应有分号,否则可能会导致执行错误。 mybatis-config.xml是iBatis的核心配置文件,它定义了数据源、事务管理等全局配置。在这个示例中,虽然未给出具体配置,但在实际项目中,会包含...

    ibatis 开发指南 和 iBATIS-SqlMaps两本图书

    9. **错误处理与调试**:分享如何排查和解决iBATIS在实际使用过程中遇到的问题。 10. **最佳实践**:提供一些关于如何优化iBATIS使用的建议,以提高性能和代码质量。 《iBATIS-SqlMaps》则可能更侧重于实战和案例...

    ibatis2.3-src

    iBatis的异常体系主要由SqlMapException、SQLException等组成,提供了丰富的错误信息,便于调试和问题定位。 10. **最佳实践** - 避免过度使用动态SQL,保持SQL语句的简洁性和可读性。 - 合理利用缓存,但要注意...

    iBatis Web用法实例

    10. **错误处理与调试**: 在开发过程中,iBatis的异常信息通常很详细,可以帮助定位问题。此外,开启日志可以查看执行的SQL语句,有助于调试和性能分析。 总结,"iBatis Web用法实例"涵盖了如何在Web环境中搭建、...

    ibatis.util包

    在这个描述中,我们看到提到的是"EMIS文件中缺少的ibatis工具包",这可能意味着在EMIS(可能是企业信息管理系统)的开发过程中,由于上传错误,这个重要的依赖包没有被正确地包含进去。 `ibatis.util`包主要包括...

    ibatis 自动生成插件

    对于快速开发而言,自动化的代码生成能显著提高效率,减少错误,并保持代码一致性。 在压缩包子文件的文件名中,我们可以看到两个JAR文件: 1. `com.baosight.iPlat2_plugin_page_1.0.1.V20070521.jar`:这可能是...

    iBATIS内置别名列表

    此外,掌握这些内置别名也有助于提高配置文件的可读性和可维护性,减少因错误配置导致的问题。希望本文能为iBATIS用户带来帮助,并欢迎各位读者分享更多相关资源,共同促进iBATIS社区的发展和完善。

    ibatis2.0中文API

    例如,当遇到数据类型转换错误、空指针异常或SQL执行效率低下等问题时,iBATIS提供了解决策略。比如使用`nullValue`属性处理空值,或者通过优化SQL语句来提高查询速度。同时,对于复杂的业务场景,iBATIS支持动态SQL...

    ibatis生成实体工具

    使用这个工具,我们可以省去编写实体类的时间,同时避免手动输入时可能出现的错误。这大大提高了开发效率,使得开发者可以更专注于业务逻辑的实现,而不是重复性的基础工作。 工具的使用方式可能包括命令行工具、...

    ibatis-2.3.

    9. **Error Handling and Logging**: iBATIS 提供了错误处理和日志记录机制,帮助开发者调试和诊断问题。通过配置,可以选择不同的日志实现,如 Log4j 或 JDK 自带的日志。 10. **Batch Operations**: iBATIS 支持...

    关于Ibatis的jar包

    Ibatis,全称为MyBatis,是一个...对于大型项目,掌握如何优雅地进行分页、事务控制、缓存管理和错误处理也非常重要。总之,Ibatis是一个强大且灵活的工具,通过深入学习和实践,可以极大地提高开发效率和代码质量。

    ibatis出错调试心得

    这些问题往往由于iBatis错误信息的隐晦性而难以快速定位与解决。本文将根据所提供的标题、描述及部分内容,详细阐述在使用iBatis时可能遇到的一些常见错误及其调试技巧。 ### 一、SQL映射文件(sqlMap)中的配置...

    解决IBatis缓存动态字段问题

    这不仅避免了因缓存错误而导致的查询失败,还确保了程序能够灵活地处理动态表名和字段名。同时,需要注意的是,在实际开发过程中还需要结合具体的业务需求来制定更合理的缓存策略,以提高应用程序的整体性能。

    struts+ibatis登录

    Struts和iBatis是两个在Java Web开发中广泛应用的框架。Struts作为一个MVC(Model-View-Controller)框架,主要用于控制应用程序的流程,而iBatis则是一个持久层框架,它简化了数据库操作,将SQL语句与Java代码解...

    ibatis批处理.doc

    - **错误处理**:如果批处理中的某个操作失败,通常可以选择回滚整个事务,以保持数据的一致性。 - **性能优化**:批量操作的数据量不宜过大,避免一次性加载过多数据导致内存压力,同时应合理调整数据库的批处理...

Global site tag (gtag.js) - Google Analytics