异常java.lang.StringIndexOutOfBoundsException:字符串索引超出范围:0

异常java.lang.StringIndexOutOfBoundsException:字符串索引超出范围:0,java,exception,Java,Exception,这是我的方法,每次运行它时都会说无法从结果集中读取列值:cColor;字符串索引超出范围:0,并在线程主java.lang.StringIndexOutOfBoundsException中引发异常:字符串索引超出范围:0。有什么想法吗?谁能告诉我哪里出错了 --OpenSession here-- Query query = session.createSQLQuery("SELECT * FROM db.tblUnits " + "WHERE csTat

这是我的方法,每次运行它时都会说无法从结果集中读取列值:cColor;字符串索引超出范围:0,并在线程主java.lang.StringIndexOutOfBoundsException中引发异常:字符串索引超出范围:0。有什么想法吗?谁能告诉我哪里出错了

    --OpenSession here--
    Query query = session.createSQLQuery("SELECT * FROM db.tblUnits "
            + "WHERE csTat = :paramStation AND cbrach = :paramLocId" 
            + "AND (cType = 'repo units' OR cType = 'svc units')")
            .setParameter("paramLocId", locId)
            .setParameter("paramStation", station);

    List<Object[]> oAvailableUnits = (List<Object[]>) query.list();

    --CloseSession here--

碰巧cColor列是空的,其数据类型是char,所以我只是将数据类型更改为varchar,因为java无法读取char数据类型

为什么使用多线程标记?堆栈跟踪包含行号和文件名,这些行号和文件名告诉您错误在哪里。在这里询问我们是没有用的,尤其是如果您不共享堆栈跟踪。在任何情况下,几乎可以肯定的是,您在这里实际向我们展示的代码中没有。您在下一行的连续字符串连接中缺少:paramLocId和和之间的空格。@Johny抱歉,这是一个错误。我知道了,我刚刚在数据库中将cColor数据类型char更改为varchar,然后它就可以工作了。但是,我仍然不明白为什么java不能读取数据类型char的长度。无论如何,谢谢你的回复。