添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

解决 Mybatis 报错 org.apache.ibatis.ognl.NoSuchPropertyException: XXXCriteria$Criterion.noValue

最新推荐文章于 2024-06-19 09:29:01 发布
最新推荐文章于 2024-06-19 09:29:01 发布 阅读量2.1k

这个 noValue 一定存在,但是报错。 场景就是存在并发的情况下,尤其是在服务刚刚启动的时候,就会发生这个异常。

但是很不幸,mybatis 3.4.1 之前,用的 OGNL 都是由这个问题。

3.4.1 之前的版本的 OgnlRuntime,这里,第三个参数传 0,则永远都是 null。

public static final Object getMethodValue(OgnlContext context, Object target, String propertyName, boolean checkAccessAndExistence) throws OgnlException, IllegalAccessException, NoSuchMethodException, IntrospectionException {
        Object result = null;
        Method m = getGetMethod(context, target == null ? null : target.getClass(), propertyName);
        if (m == null) {
            m = getReadMethod(target == null ? null : target.getClass(), propertyName, 0);

3.4.1 以及以后的版本:

 public static final Object getMethodValue(OgnlContext context, Object target, String propertyName, boolean checkAccessAndExistence) throws OgnlException, IllegalAccessException, NoSuchMethodException, IntrospectionException {
        Object result = null;
        Method m = getGetMethod(context, target == null ? null : target.getClass(), propertyName);
        if (m == null) {
            m = getReadMethod(target == null ? null : target.getClass(), propertyName, (Class[])null);

显然 getReadMethod 这个地方的实现已经完全发生改变。

而 getGetMethod 存在 并发问题,线程不安全。

mybatis - Caused by: org.apache.ibatis.ognl.NoSuchPropertyException: - Stack Overflow

org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.mindskip.xzs.repository.SubjectMapper.page at com.baomidou.mybatisplus.core.override.PageMapperMethod$SqlCommand.<init>(PageMapperMethod.java:261) ~[mybatis-plus-co
问题描述: org.apache.ibatis.ognl.NoSuchPropertyException: com.entity.UserEntity.createDate 问题分析: 1、UserEntity类没有createDate属性,导致报错解决办法:UserEntity类添加createDate属性。 第一种是入参里面名字对应不上 不管你是map还是对象名字对应不上都不行 比如你在mapper里面materialName像根据来查找,但实际你入参的对象或者map里面的对象没有这个属性就会报错,报没有这样的属性异常“NoSUchProPertyException” 第二种是属性命名不规范,比如is_XXX,这种mybatis解析时就会报错,尽量避免这种命名。 ...
完美解决org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.reflection.Refl
因为数据库表中有个字段名叫desc,如图所示: desc是MySQL语法中的关键字,mybatis plus自动生成的sql中因为这个关键字的影响,就造成了语法错误。方案1:更换字段名为非MySQL关键字即可。 例如此处我把字段名改成describer,同时更改Java中的实体类属性名。 clean之后再次运行,项目顺利启动不再报错。 方案2:不使用mybatis plus ,更换成
关于mybatis报错:找不到某个属性的问题1、前言2、问题出现的场景3、解决办法 本人是在做公司一个“古董项目”的时候遇到的问题,其中造成该错误的大部分原因也是因为自己的操作失误,最后步步调试终于找出了问题的原因。做个记录有个印象,也给以后自己解决问题的思路提供一些借鉴。 2、问题出现的场景 很简单的操作,添加一条数据进行异步显示;前后端逻辑没有任何问题,因为这部分代码完成可以自动生成,也进行测试过。 但是后来我因为需求在数据库中加了一个字段——序号(order),后来用工具自动生成了代码,
在使用myabtis进行查询时报:Caused by: org.apache.ibatis.ognl.NoSuchPropertyException: com.souche.workorders.model.query.AiLogQuery.filterStart。错误。 自己检查了下实体类的属性名称和sql中的参数名称,发现没错(这里得背锅,太粗心大意了)。 百度了一番,没有找到比较靠谱的答案,只能自己上手看源码了,一层一层断点下去,最终发现 还是参数名称没写对。sql中的 解决: 如果是只有一个集合作为参数,无影响。如果除了集合参数,还有其他类型的,则批量的集合参数必须放在第一个。例如: void updateFromManage(@BatchParameter("companyBillingItem") List companyItems, @Param("ns
根据提供的引用内容,解决Mybatis报错org.apache.ibatis.exceptions.PersistenceException的方法如下: 1. 检查配置文件:首先,确保你的Mybatis配置文件正确无误。检查是否存在语法错误、路径错误或其他配置错误。特别注意检查数据库连接信息是否正确。 2. 检查SQL语句:如果报错信息中包含"Error querying",则可能是SQL语句的问题。检查你的SQL语句是否正确,包括表名、列名、参数等是否与数据库中的实际情况一致。 3. 检查映射文件:如果使用了映射文件,检查映射文件中的配置是否正确。确保映射文件中的命名空间、SQL语句的id、参数等与实际情况一致。 4. 检查数据库连接:如果报错信息中包含"Error querying",还需要检查数据库连接是否正常。确保数据库服务已启动,并且数据库连接信息正确。 5. 查看详细错误信息:如果以上方法都无法解决问题,可以查看详细的错误信息,以便更好地定位问题。可以通过打印异常堆栈信息或查看日志文件来获取更多的错误信息。 6. 检查依赖:如果以上方法都无法解决问题,还可以检查你的项目依赖是否正确。确保你的项目中包含了正确版本的Mybatis依赖。 下面是一个示例代码,演示了如何解决Mybatis报错org.apache.ibatis.exceptions.PersistenceException: ```java try { // 执行Mybatis操作 } catch (PersistenceException e) { // 处理异常 e.printStackTrace(); spring读取resources文件夹下的文件报错:cannot be resolved to absolute file path because it dose not reside in th 通达信涨停板选股公式 解决Navicat12无法连接mysql8.4数据库:Authentication plugin ‘caching_sha2_password‘ cannot be loaded