当前实体类不包含名为lambda$1的属性-- Lambda表达式

导致异常
Example.Builder exampleBuilder = Example.builder(DsmPdcVm.class);
if (!insList.isEmpty()) {
                exampleBuilder.andWhere(WeekendSqls.<DsmPdcVm>custom().andIn(DsmPdcVm::getVmId, vmIdList));//就是这行代码
        }

异常信息如下
09:52:54.133 [DsmResponseBodyAdvice.processControllerException] - 当前实体类不包含名为lambda$1的属性!
tk.mybatis.mapper.MapperException: 当前实体类不包含名为lambda$1的属性!
at tk.mybatis.mapper.entity.Example$Builder.column(Example.java:1056)
at tk.mybatis.mapper.entity.Example$Builder.transformCriterion(Example.java:1039)
at tk.mybatis.mapper.entity.Example$Builder.build(Example.java:1018)
at com.ai.dsm.xc.service.impl.XcInsServiceImpl.listXcIns(XcInsServiceImpl.java:55)
at com.ai.dsm.xc.controller.XcInsController.list(XcInsController.java:54)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)
at oerServlet.java:901)
被这个问题困扰好久,各种方法都尝试了下,包括mvn clear,重新打包,逻辑检查等等等等,而且网上现在基本没有对应的资料可供查询。
最终解决办法:
    将:exampleBuilder.andWhere(WeekendSqls.<DsmPdcVm>custom().andIn(DsmPdcVm::getVmId, vmIdList));
    改为:exampleBuilder.andWhere(WeekendSqls.custom().andIn("vmId", vmIdList));

    问题解决

思考:

    同样的andIn方法,一个加了实体类泛型,一个直接用的String表达式,而前者就报错。

    Lambda表达式是JDK8的新特性,为我们带来了很多便利,包栝排列字符串,方法与构造函数引用:Java 8 允许你使用 :: 关键字来传递方法或者构造函数引用,以及访问局部变量我们可以直接在lambda表达式中访问外层的局部变量,Lambda 作用域:在lambda表达式中访问外层作用域和老版本的匿名对象中的方式很相似。你可以直接访问标记了final的外层局部变量,或者实例的字段以及静态变量。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值