实力踩坑:invalid comparison: java.util.Date and java.lang.String

Posted 一宿君

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了实力踩坑:invalid comparison: java.util.Date and java.lang.String相关的知识,希望对你有一定的参考价值。

实力踩坑:invalid comparison: java.util.Date and java.lang.String

1、错误日志

Caused by: java.lang.IllegalArgumentException: invalid comparison: java.util.Date and java.lang.String
	at org.apache.ibatis.ognl.OgnlOps.compareWithConversion(OgnlOps.java:93)
	at org.apache.ibatis.ognl.OgnlOps.isEqual(OgnlOps.java:143)
	at org.apache.ibatis.ognl.OgnlOps.equal(OgnlOps.java:802)
	at org.apache.ibatis.ognl.ASTNotEq.getValueBody(ASTNotEq.java:53)
	at org.apache.ibatis.ognl.SimpleNode.evaluateGetValueBody(SimpleNode.java:212)
	at org.apache.ibatis.ognl.SimpleNode.getValue(SimpleNode.java:258)
	at org.apache.ibatis.ognl.ASTAnd.getValueBody(ASTAnd.java:61)

2、分析原因解决

找到mybatis的xml文件,发现只有这两个字段是日期类型,仔细想了一下,那八成就是日期类型Date不能进行字符串Date != ""判断,只进行Date != null判断即可!

<if test='startDate != null and startDate != ""'>
     start_date = #startDate,jdbcType=TIMESTAMP,
</if>
<if test='endDate != null and endDate != ""'>
     end_date = #endDate,jdbcType=TIMESTAMP
</if>

只需改成如下:

<if test='startDate != null'>
     start_date = #startDate,jdbcType=TIMESTAMP,
</if>
<if test='endDate != null'>
     end_date = #endDate,jdbcType=TIMESTAMP
</if>

再次运行就妥了!!!

以上是关于实力踩坑:invalid comparison: java.util.Date and java.lang.String的主要内容,如果未能解决你的问题,请参考以下文章

mybatis异常invalid comparison: java.util.Date and java.lang.String

MyBatis错误:invalid comparison: java.util.Date and java.lang.String

mybatis部分版本异常invalid comparison: java.util.Date and java.lang.String

使用mybatis出现异常:invalid comparison: java.time.LocalDateTime and java.lang.String

mybatis无效比较:invalid comparison:java.util.data and java.lang.string

invalid comparison: java.util.ArrayList and java.lang.String——bug解决办法