“No primary or single unique constructor found for interface java.util.List”问题原因及解决

这篇具有很好参考价值的文章主要介绍了“No primary or single unique constructor found for interface java.util.List”问题原因及解决。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

问题原因:

这个错误通常出现在使用 MyBatis 查询结果映射时,MyBatis 无法找到适合的构造方法来将查询结果转换为指定的 Java 对象。具体来说,错误信息 "No primary or single unique constructor found for interface java.util.List" 意味着 MyBatis 在将查询结果转换为 List 类型对象时遇到了问题,因为它无法找到一个合适的构造方法来实例化 List 对象。

而导致这些问题有以下几种原因:

  1. 错误的映射类型: 在 MyBatis 的映射文件中,可能将结果集映射为了 java.util.List 类型,但实际上 MyBatis 不能直接将结果集映射为 List 类型,因为 List 是一个接口,不能直接实例化。解决方法是将映射类型改为一个具体的 Java 类型,例如 com.yourpackage.YourEntityClass

  2. 缺少合适的构造方法: 如果实体类(例如 YourEntityClass)没有提供无参构造方法,同时 MyBatis 也无法找到合适的构造方法来匹配查询结果的列,就会出现这个错误。

  3. 构造方法参数匹配问题: 如果实体类中的构造方法参数和查询结果的列不匹配,也会导致这个错误。请确保实体类的构造方法参数顺序和类型与查询结果的列一一对应。

  4. 自定义结果映射问题: 如果使用了自定义的结果映射(ResultMap),请确保配置正确,并且没有产生冲突。

解决方法:
  • 确认 MyBatis 映射文件中的结果映射配置是否正确,特别是对应实体类是否正确。
  • 确认实体类是否提供了无参构造方法,并且构造方法参数是否正确匹配查询结果的列。
  • 确认查询的 SQL 语句是否正确,列名是否和实体类的属性名匹配。

本人解决的步骤:

以上是网上搜集的一些解决办法,而我在经过问题排查后发现是因为自己在mapper层为加@PathVariable注解。

“No primary or single unique constructor found for interface java.util.List”问题原因及解决,java学习笔记,java,开发语言

 不添加该注解导致错误的原因:

@PathVariable注解的作用在Controller层的方法中,参数注解 @PathVariable 用于将URL路径中的变量提取出来,并绑定到方法的参数上。它告诉Spring MVC框架该参数值应该从URL路径中获取,而不是从请求的请求体(Request Body)中获取。

        当在Controller层的方法参数上使用 @PathVariable 注解时,Spring MVC会尝试根据URL路径的占位符名称来匹配方法参数的名称,从而将URL路径中的变量值传递给方法参数。如果在使用 @PathVariable 注解时,没有在方法参数上添加该注解,Spring MVC将无法正确识别URL路径中的变量,从而导致找不到匹配的方法签名,进而报错 "No primary or single unique constructor found for interface java.util.List"。

        举个例子,这里我有一个URL路径 /delete/1,2,3,其中 1,2,3 是要删除的ids。在Controller层的方法中,如果没有使用 @PathVariable 注解,Spring MVC会默认从请求体中获取参数,但请求体中并没有ids参数,所以就会报错找不到匹配的方法签名。

        使用 @PathVariable 注解时,要确保注解的参数名与URL路径中的占位符名称一致,这样Spring MVC才能正确地将URL路径中的变量传递给方法参数。文章来源地址https://www.toymoban.com/news/detail-699432.html

到了这里,关于“No primary or single unique constructor found for interface java.util.List”问题原因及解决的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 服务器报500错误 No primary or single unique constructor found for interface java.util.List

     批量删除日志记录 前端请求 URL:http://localhost:8080/system/log? ids=3,4,5 Method:DELETE 后端接口: 报错:java.lang.IllegalStateException: No primary or single unique constructor found for interface java.util.List 解决方法:添加@RequestParam注解 原因分析:  由于 Spring Boot 默认情况下会尝试使用请求参数的值来创建

    2024年02月07日
    浏览(25)
  • springboot传递List类型参数报错 No primary or single unique constructor found for interface java.util.List

    昨天在做毕设进行一对多插入的时候 出现了500错误 先看代码 mapper层代码 这里我是list集合进行一对多插入 控制层 前端  页面展示 然后页面显示500错误  查看控制台   报错:No primary or single unique constructor found for interface java.util.List     at org.springframework.beans.BeanUtils.getResol

    2024年02月11日
    浏览(35)
  • spring boot kotlin webflux 或 web 多文件上传 报错400 415 No primary or single unique constructor found for

    #当我们使用Kotlin编写Spring Boot进行多文件上传的时候,传统的方法如下: 此时会有如下几种情况: 以上是第一种情况,直接报错,并提示无主构造函数。这时我们通过互联网搜索可能会在形参上加上: @RequestParam (web)或者 @RequestPart (webflux)。如下: 然后后端没报错了,返回值

    2024年02月15日
    浏览(28)
  • No primary or default constructor found for interface java.util.List

    有时候我们前端会传一些 list 集合的参数,如果 list 集合的存储的类型是对象,通过 json 就可以封装,后端使用注解 @RequestBody 可以接收。如果是想传递通过装箱后的基本类型的 list ,需要使用到注解 @RequestParam。 后端没有使用 @RequestParam,swagger和postman传参数就会报这个错误

    2024年02月12日
    浏览(37)
  • No primary or default constructor found for interface javax.servlet.http.HttpServletRequest

    前言: 前不久在写开放平台项目中,想直接在微服务网关Gateway中写对外接口,并想通过传统的HttpServlet方式去拿请求里面的数据,在Controller的方法参数上加上HttpServerRequest却发现报错。 1、问题复现 在我们使用spring-boot-starter-web依赖的时候,我们可以在controller的接口类的方法

    2024年02月16日
    浏览(30)
  • 【unity细节】Default constructor not found for type Player(找不到默认构造函数)

    👨‍💻个人主页 :@元宇宙-秩沅 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 本文由 秩沅 原创 收录于专栏 :unity细节和bug : Default constructor not found for type Player System.RuntimeType.CreateInstanceMono (System.Boolean nonPublic, System.Boolean wrapExceptions) (at 88e4733ac7bc4ae1b496735e6b83bbd3:0) System.Runt

    2024年02月10日
    浏览(27)
  • C#12中的Primary Constructors(主构造函数)

    什么是主构造函数 把参数添加到class与record的类声明中就是主构造函数。例如 这种写法与以下代码写法一样 需要注意的是,类的所有其他构造函数都必须通过 this() 构造函数调用直接或间接调用主构造函数。 主构造函数参数的最常见用途包括但不限于以下几个方面: 初始化

    2024年02月05日
    浏览(28)
  • 【】解决minio启动报ERROR Unable to use the drive ** found backend type fs, expected xl or xl-single

    由于minio报了一个安全漏洞(MinIO verify 接口敏感信息泄露漏洞分析(CVE-2023-28432)_minio 漏洞_超酸柠檬的博客-CSDN博客),以至于公司需要升级minio版本,但是我发现使用最新版本的minio后minio无法正常启动了。由于之前就是单机部署,因此这次还是单机部署,结果却启动不起来了

    2023年04月24日
    浏览(75)
  • java.lang.UnsatisfiedLinkError: No implementation found for

    由于native方法修改了包名,导致load so执行的时候崩溃原因分析; 1)确认报错的方法有没有被混淆。         查看混淆 文件是否有下面的配置:                 //保留native方法的类名和方法名                 -keepclasseswithmembernames class * {            

    2023年04月23日
    浏览(30)
  • python报错:ERROR: No matching distribution found for

      使用pip安装包时提示报错如下: ERROR: Could not find a version that satisfies the requirement package (from versions: none) ERROR: No matching distribution found for package 大多数是网络问题,替换使用国内的镜像来源加速即可。 打开cmd 输入  按回车执行命令后,安装成功。 例如:  

    2024年02月15日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包