错误如下:
Caused by: java.lang.IllegalArgumentException: invalid comparison: java.util.Date and java.lang.String
at org.apache.ibatis.ognl.OgnlOps.compareWithConversion(OgnlOps.java:93) ~[mybatis-3.4.6.jar:3.4.6]
at org.apache.ibatis.ognl.OgnlOps.isEqual(OgnlOps.java:143) ~[mybatis-3.4.6.jar:3.4.6]
at org.apache.ibatis.ognl.OgnlOps.equal(OgnlOps.java:802) ~[mybatis-3.4.6.jar:3.4.6]
at org.apache.ibatis.ognl.ASTNotEq.getValueBody(ASTNotEq.java:53) ~[mybatis-3.4.6.jar:3.4.6]
at org.apache.ibatis.ognl.SimpleNode.evaluateGetValueBody(SimpleNode.java:212) ~[mybatis-3.4.6.jar:3.4.6]
at org.apache.ibatis.ognl.SimpleNode.getValue(SimpleNode.java:258) ~[mybatis-3.4.6.jar:3.4.6]
at org.apache.ibatis.ognl.ASTAnd.getValueBody(ASTAnd.java:61) ~[mybatis-3.4.6.jar:3.4.6]
invalid comparison: java.util.Date and java.lang.String
:翻译过来就是,无效的比较,Date和String比较无效
通过地毯式查找问题,看哪里有用Date
和String
比较的,最终发现是sql
里做了比较,如下图:
可以看到 startTime
和endTime都是Date
,而在sql中有这样的比较startTime !=''
和endTime !=''
解决方案:
去掉这个判断即可,如图