zoukankan      html  css  js  c++  java
  • hibernate createSQLQuery StringIndexOutOfBoundsException: String index out of range: 0

    有一个sql用union拼接的如下:

    select id,(**还有很多字段**),'' as NewName from tb1
    union
    select id,(**还有很多字段**),name as NewName from tb2
    union
    select id,(**还有很多字段**),name as NewName from tb3

    tb1表中不存在这个字段所以用'' as NewName
    tb2,tb3中有这了个字段是varchar的
    查询以一直报错:StringIndexOutOfBoundsException: String index out of range: 0
    1.但是每个select单独查询完全没问题 ,开始以为是union的问题,

    2.去掉NewName 这个字段后也没问题,.以为是sql太长了,

    3.解决:最后网上查是因为:处理方法  数据表字段为char导致,修改为VARCHAR. 建表时不要使用char类型,为null就会报以上错误

    原因是tb1中:'' as NewName以为是char而下面有数据的是varchar所以union的时候类型不一样就会报错。

    最后把:  '' as NewName  改成  null as NewName 

    改完成SQL如下,搞定:

    select id,(**还有很多字段**),null as NewName from tb1
    union
    select id,(**还有很多字段**),name as NewName from tb2
    union
    select id,(**还有很多字段**),name as NewName from tb3

     和上面相反的问题 

    hibernate  createSQLQuery报错: MappingException: No Dialect mapping for JDBC type: 0

    有SQL,只有一个select:

    select id,(**还有很多字段**),null as isVisit from Table

    报错MappingException: No Dialect mapping for JDBC type: 0

    (isVist数据库中不存在这个字段)把:  null as isVisit  改成  null as isVisit 搞定:
    select id,(**还有很多字段**),'' as isVisit from Table
     


  • 相关阅读:
    java-引用数组、继承、super关键字
    java-分支重载以及构造方法
    java-面向对象之类、对象
    java-方法创建与使用
    java-数组排序之冒泡排序(经典排序)
    java-循环的应用环境以及数组的创建
    java-循环
    java-运算符与判断
    java-分支结构(四种基本分支结构的认识)
    java-运算符以及简单运用
  • 原文地址:https://www.cnblogs.com/q149072205/p/11934945.html
Copyright © 2011-2022 走看看