System.IndexOutOfRangeException: Index was outside the bounds of the array.
系统用ibatiS,查询结果会返回到VO里,即resultClass=abcVO,VO可以理解为封装的一个类。(有点废话^_^)
检索条件有三种情况A、B,但抽出的结果大致相同,所以sql语句写在了一起。代码如下:
<![CDATA[ SELECT
MHAH100TB.MENU_HNGT_ID AS MenuID,
MHAH100TB.MENU_KBN AS MenuKind,
]]>
<isNotEqual property="CATEG" compareValue="501">
<isNotEqual property="CATEG" compareValue="601">
<![CDATA[
MHAH100TB_BG.TTL_TXT AS BackgroundTitle,
MHAH100TB_CATEG.MJ_NME AS CategoryFontName
]]>
</isNotEqual>
</isNotEqual>
<isEqual property="CATEG" compareValue="501"> //B查询时传过来的参数"CATEG"值为"501"
<![CDATA[
MHAH100TB.TTL_TXT AS BackgroundTitle
]]>
</isEqual>
<isEqual property="CATEG" compareValue="601">
<![CDATA[
MHAH100TB.TTL_TXT AS CategoryFontName //按理说B查询时不会把这句话作为查询条件
]]>
</isEqual>
<![CDATA[
FROM MHAH100TB
当系统第一次加载时,查询B,结果都可以正确显示。如果先查询A,结果能正确显示,再查询B,此时系统就会报错。
加断点跟踪调试后发现,在执行完B查询后,给VO里面对应的字段赋值时,系统会多给一个字段赋值(也就是CategoryFontName)。最后就会报:Index was outside the bounds of the array.的错误。
因为才接触ibatiS,所以对它的原理还不是很了解。我在怀疑是ibatiS处理上的问题,但又不知道问题到底在哪。
请大家帮忙看一下。
ps:系统log都查看过了,没找出问题的所在。请高手指点迷津。