“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日
    浏览(17)
  • springboot传递List类型参数报错 No primary or single unique constructor found for interface java.util.List

    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日
    浏览(13)
  • spring boot kotlin webflux 或 web 多文件上传 报错400 415 No primary or single unique constructor found for

    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日
    浏览(16)
  • No primary or default constructor found for interface java.util.List

    No primary or default constructor found for interface java.util.List

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

    2024年02月12日
    浏览(12)
  • 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日
    浏览(14)
  • 【unity细节】Default constructor not found for type Player(找不到默认构造函数)

    【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日
    浏览(10)
  • C#12中的Primary Constructors(主构造函数)

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

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

    【】解决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日
    浏览(61)
  • java.lang.UnsatisfiedLinkError: No implementation found for

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

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

    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日
    浏览(10)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包