MyBatis-plus报错:Error evaluating expression ‘ew.sqlSegment != null

在使用MyBatisPlus的QueryWrapper构造查询条件时,遇到一个误导性的报错信息`ew.sqlSegment!=null`。实际上,问题出在`ew.likeRight()`方法上,由于缺少参数导致。正确调用应为`ew.likeRight(t2.project_card_number projectCardNumber)`,确保所有条件字段和值都已正确传递。通过调试检查`ew`的`expression`属性可以发现条件是否生效。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

报错信息

Caused by: org.apache.ibatis.builder.BuilderException: Error evaluating expression 'ew.sqlSegment != null '. Cause: org.apache.ibatis.ognl.OgnlException: sqlSegment [com.baomidou.mybatisplus.core.exceptions.MybatisPlusException: not support this column !]

问题重现

 QueryWrapper ew = new QueryWrapper();
 ew.likeRight(StringUtils.isNotEmpty(projectCardNumber),projectCardNumber);
 List<FinishedProductInStockVO> list = baseMapper.selectFinishedProductInStockVO(ew,
         searchParam, startInTime, endInTime);

报错原因

ew.likeRight(boolean condition,object cloumn,object value)
参数传递有误
少传一个参数!!

更正

ew.likeRight(StringUtils.isNotEmpty(projectCardNumber), "t2.project_card_number", projectCardNumber);

问题报错:ew.sqlSegment != null 很容易误解为ew的传参问题,但确实也是它的问题,可以通过debug查看ew的expression 中的normal 属性是否被赋值来查看条件是否生效

15:32:16:652 ERROR 29324 --- [nio-8082-exec-1] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.builder.BuilderException: Error evaluating expression 'ew.sqlSegment != null and ew.sqlSegment != '' and ew.nonEmptyOfWhere'. Cause: org.apache.ibatis.ognl.OgnlException: sqlSegment [java.lang.NoClassDefFoundError: Could not initialize class com.baomidou.mybatisplus.core.toolkit.support.SerializedLambdaMeta]] with root cause java.lang.ExceptionInInitializerError: Exception java.lang.reflect.InaccessibleObjectException: Unable to make field private final java.lang.Class java.lang.invoke.SerializedLambda.capturingClass accessible: module java.base does not "opens java.lang.invoke" to unnamed module @5158b42f [in thread "http-nio-8082-exec-7"] at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:354) ~[na:na] at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:297) ~[na:na] at java.base/java.lang.reflect.Field.checkCanSetAccessible(Field.java:178) ~[na:na] at java.base/java.lang.reflect.Field.setAccessible(Field.java:172) ~[na:na] at com.baomidou.mybatisplus.core.toolkit.SetAccessibleAction.run(SetAccessibleAction.java:18) ~[mybatis-plus-core-3.4.3.jar:3.4.3] at com.baomidou.mybatisplus.core.toolkit.SetAccessibleAction.run(SetAccessibleAction.java:9) ~[mybatis-plus-core-3.4.3.jar:3.4.3] at java.base/java.security.AccessController.doPrivileged(AccessController.java:318) ~[na:na] at com.baomidou.mybatisplus.core.toolkit.ReflectionKit.setAccessible(ReflectionKit.java:203) ~[mybatis-plus-core-3.4.3.jar:3.4.3] at com.baomidou.mybatisplus.core.toolkit.support.SerializedLambdaMeta.<clinit>(SerializedLambdaMeta.java:19) ~[mybatis-plus-core-3.4.3.jar:3.4.3] at com.baomidou.mybatisplus.c
最新发布
07-17
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值