【Java异常】使用通用Mapper ,报There is no getter for property named ‘distinct‘ in ‘class 错

简介: 【Java异常】使用通用Mapper ,报There is no getter for property named ‘distinct‘ in ‘class 错

一、报错信息

Caused by: org.apache.ibatis.reflection.ReflectionException: There is no getter for property named 'distinct' in 'class com.uiotsoft.subsite.mybatis.model.TCmsSite'

二、出错原因

selectByExample()方法传递的参数错误,应该传example类型,而不是实体类。(开源中国开发者们提供)

最近在项目中使用通用Mapper的时候,有一个方法mapper.selectByExample() ,我当时传入的参数类型为T (泛型),就报了这个错。具体如代码所示:selectByExample()方法里面传递的是具体的实体类:

public TCmsSite findByDomain(String domain) {
    TCmsSite site = new TCmsSite();
    site.setDomain(domain);
    List<TCmsSite> tCmsSites = siteMapper.selectByExample(site);
    if (tCmsSites.size() > 0){
        site = tCmsSites.get(0);
    }
    return site;
}

三、解决方案

目前有两种解决方案:两种方案其实大同小异,写在这里只是想提供更多的思路,对于每个项目,可选择具体的方案。

方案1:无条件的

修改selectByExample()方法传递的参数类型,传入Example类型参数,对于我的项目而言,具体的代码修改方法如下:

public TCmsSite findByDomain(String domain) {
    TCmsSite site = new TCmsSite();
    Example example = new Example(TCmsSite.class);
    List<TCmsSite> tCmsSites = siteMapper.selectByExample(example);
    if (tCmsSites.size() > 0){
        site = tCmsSites.get(0);
    }
    return site;
}

方案2:添加条件的

public TCmsSite findByDomain(String domain) {
    TCmsSite site = new TCmsSite();
    Example example = new Example(TCmsSite.class);
    Example.Criteria criteria = example.createCriteria();
    criteria.andEqualTo("domain", domain);
    List<TCmsSite> tCmsSites = siteMapper.selectByExample(example);
    if (tCmsSites.size() > 0){
        site = tCmsSites.get(0);
    }
    return site;
}

四、distinct属性

 

 

以上是目前想到的解决方案,后续有好的方案,再更新。欢迎大家提出新的思路哦~~~

 

完结!


相关文章
|
9月前
|
JSON Java 数据格式
java调用服务报错400
java调用服务报错400
245 6
java调用服务报错400
|
9月前
|
JSON Java 数据格式
java调用服务报错415 Content type ‘application/octet-stream‘ not supported
java调用服务报错415 Content type ‘application/octet-stream‘ not supported
558 6
|
10月前
|
Java API 开发工具
【Azure Developer】Java代码实现获取Azure 资源的指标数据却报错 "invalid time interval input"
在使用 Java 调用虚拟机 API 获取指标数据时,因本地时区设置非 UTC,导致时间格式解析错误。解决方法是在代码中手动指定时区为 UTC,使用 `ZoneOffset.ofHours(0)` 并结合 `withOffsetSameInstant` 方法进行时区转换,从而避免因时区差异引发的时间格式问题。
424 4
|
11月前
|
Android开发
复杂项目即时通讯从android 5升级android x后遗症之解决报错#79 java.io.EOFException Unexpected end of ZLIB input stream-优雅草卓伊凡|bigniu
复杂项目即时通讯从android 5升级android x后遗症之解决报错#79 java.io.EOFException Unexpected end of ZLIB input stream-优雅草卓伊凡|bigniu
633 4
复杂项目即时通讯从android 5升级android x后遗症之解决报错#79 java.io.EOFException Unexpected end of ZLIB input stream-优雅草卓伊凡|bigniu
|
Java 程序员 数据库连接
我们详细地讲解一下 Java 异常及要如何处理
我是小假 期待与你的下一次相遇 ~
311 1
|
运维 Cloud Native Java
postman发起post请求遇到报错:java.io.FileNotFoundException (文件名、目录名或卷标语法不正确。)
遇到bug报错,多猜可能的原因,控制变量反复测试,直至找到问题的关键,然后再思考如何解决或者回避。 博客不应该只有代码和解决方案,重点应该在于给出解决方案的同时分享思维模式,只有思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来
|
SQL druid Oracle
【YashanDB知识库】yasdb jdbc驱动集成druid连接池,业务(java)日志中有token IDENTIFIER start异常
客户Java日志中出现异常,影响Druid的merge SQL功能(将SQL字面量替换为绑定变量以统计性能),但不影响正常业务流程。原因是Druid在merge SQL时传入null作为dbType,导致无法解析递归查询中的`start`关键字。
|
SQL Java 中间件
【YashanDB知识库】yasdb jdbc驱动集成BeetISQL中间件,业务(java)报autoAssignKey failure异常
在BeetISQL 2.13.8版本中,客户使用batch insert向yashandb表插入数据并尝试获取自动生成的sequence id时,出现类型转换异常。原因是beetlsql在prepareStatement时未指定返回列,导致yashan JDBC驱动返回rowid(字符串),与Java Bean中的数字类型tid不匹配。此问题影响业务流程,使无法正确获取sequence id。解决方法包括:1) 在batchInsert时不返回自动生成的sequence id;2) 升级至BeetISQL 3,其已修正该问题。
【YashanDB知识库】yasdb jdbc驱动集成BeetISQL中间件,业务(java)报autoAssignKey failure异常
|
Java 程序员 开发者
Java社招面试题:一个线程运行时发生异常会怎样?
大家好,我是小米。今天分享一个经典的 Java 面试题:线程运行时发生异常,程序会怎样处理?此问题考察 Java 线程和异常处理机制的理解。线程发生异常,默认会导致线程终止,但可以通过 try-catch 捕获并处理,避免影响其他线程。未捕获的异常可通过 Thread.UncaughtExceptionHandler 处理。线程池中的异常会被自动处理,不影响任务执行。希望这篇文章能帮助你深入理解 Java 线程异常处理机制,为面试做好准备。如果你觉得有帮助,欢迎收藏、转发!
873 14