iBatis |动态Sql | remapResults - 随机错误

时间:2013-12-17 11:44:33

标签: java sql ibatis

我们有一个动态sql,其中select子句和表名是变量。 以下是2个查询,而Integer 5是两个版本之间的差异。 注意:我们从头开始指定了remapResults = true。

SELECT Int1, Int2, Int3, Int4, Date1
FROM   Table1
WHERE ...

SELECT Int1, Int2, Int3, Int4, Int5, Date1
FROM Table2
WHERE ...

代码在95%的时间内按预期执行,并且有时会抛出不可重现的异常。

异常1:net.sf.cglib.beans.BulkBeanException:java.util.Date无法强制转换为java.lang.Integer

异常2:net.sf.cglib.beans.BulkBeanException:java.lang.Integer无法强制转换为java.util.Date

请注意,参数图是一个类,结果也是一个类。

从日志中可以清楚地看出,ibatis没有正确遵守select查询中的字段,并且在日期为第4个元素而第5个整数甚至不存在的情况下,ibatis试图将日期映射到整数select子句。可能正在缓存结果模式。但是不是remapResults应该解决这个问题吗?并且它几乎总是起作用并导致随机异常,因此很难在问题上归零。

我们已经考虑了其他选项来摆脱动态sql,但想在转移到其他选项之前确定问题。

知道问题/修复可能是什么?我们应该使用remapResults和resultMap而不是resultClass吗?

0 个答案:

没有答案