Jooq fetchInto 类 java.util.LinkedHashMap 无法转换为类

2023-12-11

给出最后一个例子这个所以线程.

我收到此错误:

java.lang.ClassCastException: class java.util.LinkedHashMap cannot be cast to class com.example.dtos.UserElement (java.util.LinkedHashMap is in module java.base of loader 'bootstrap'; com.example.dtos.UserElement is in unnamed module of loader 'app')

我是否应该使用 jooq 会满意的特殊映射器?

欢迎任何帮助

Edit:

Jooq版本:3.14.3 研究生:11

ctx.select(
    USERS.ID.`as`("id"),
    USERS.USERNAME.`as`("name"),
    field(select(jsonArrayAgg(
        jsonObject(
            jsonEntry("id", USER_ELEMENT.ID),
            jsonEntry("name", USER_ELEMENT.ELEMENTS)
        )
    )
).from(USER_ELEMENT).where(USER_ELEMENT.ID
    .`in`(
        select(USER_ELEMENT_ACTION.USER_ELEMENT_ID)
            .from(USER_ELEMENT_ACTION)
            .where(USER_ELEMENT_ACTION.USER_ID.eq(USERS.ID))
        )
    )).`as`("elements")
).from(USERS)
.apply { if (condition != null) where(condition) }
.fetchInto(UserRoles::class.java)

dto

data class UserRoles(val id: Int, val name: String, val elements: List<UserElement>?)
data class UserElement(val id: Int, val name: String)

我也尝试过使用简单平面映射器

ctx.configuration().set(JooqMapperFactory.newInstance().newRecordMapperProvider())

but get

MapperBuildingException: Could not find Getter for JooqFieldKey{field="elements", index=2} returning type

我正在使用 Spring Boot,这是我的 Jackson 依赖项:

implementation("com.fasterxml.jackson.module:jackson-module-kotlin:2.10.5")
implementation("com.fasterxml.jackson.core:jackson-databind:2.10.0")

堆栈跟踪:

java.lang.ClassCastException: class java.util.LinkedHashMap cannot be cast to class com.example.dtos.UserElement (java.util.LinkedHashMap is in module java.base of loader 'bootstrap'; com.example.common.dtos.UserElement is in unnamed module of loader 'app')
at com.example.dao.UserDao.findUserAuthorities(UserDao.kt:103) ~[main/:na]
at com.example.service.auth.AuthService.getUserDetailByUsername(AuthService.kt:34) ~[main/:na]
at com.example.security.AuthUserDetailService.loadUserByUsername(WebSecurityConfigurer.kt:58) ~[main/:na]
at com.example.security.jwt.JwtRequestFilter.passAuthToTheSecurityContext(JwtRequestFilter.kt:48) ~[main/:na]
at com.example.security.jwt.JwtRequestFilter.doFilterInternal(JwtRequestFilter.kt:35) ~[main/:na]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.2.10.RELEASE.jar:5.2.10.RELEASE]
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) ~[spring-security-web-5.3.5.RELEASE.jar:5.3.5.RELEASE]
at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:116) ~[spring-security-web-5.3.5.RELEASE.jar:5.3.5.RELEASE]
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) ~[spring-security-web-5.3.5.RELEASE.jar:5.3.5.RELEASE]
at org.springframework.security.web.header.HeaderWriterFilter.doHeadersAfter(HeaderWriterFilter.java:92) ~[spring-security-web-5.3.5.RELEASE.jar:5.3.5.RELEASE]
at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:77) ~[spring-security-web-5.3.5.RELEASE.jar:5.3.5.RELEASE]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.2.10.RELEASE.jar:5.2.10.RELEASE]
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) ~[spring-security-web-5.3.5.RELEASE.jar:5.3.5.RELEASE]
at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:105) ~[spring-security-web-5.3.5.RELEASE.jar:5.3.5.RELEASE]
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) ~[spring-security-web-5.3.5.RELEASE.jar:5.3.5.RELEASE]
at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:56) ~[spring-security-web-5.3.5.RELEASE.jar:5.3.5.RELEASE]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.2.10.RELEASE.jar:5.2.10.RELEASE]
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) ~[spring-security-web-5.3.5.RELEASE.jar:5.3.5.RELEASE]
at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:215) ~[spring-security-web-5.3.5.RELEASE.jar:5.3.5.RELEASE]
at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:178) ~[spring-security-web-5.3.5.RELEASE.jar:5.3.5.RELEASE]
at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:358) ~[spring-web-5.2.10.RELEASE.jar:5.2.10.RELEASE]
at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:271) ~[spring-web-5.2.10.RELEASE.jar:5.2.10.RELEASE]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-9.0.39.jar:9.0.39]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-9.0.39.jar:9.0.39]
at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) ~[spring-web-5.2.10.RELEASE.jar:5.2.10.RELEASE]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.2.10.RELEASE.jar:5.2.10.RELEASE]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-9.0.39.jar:9.0.39]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-9.0.39.jar:9.0.39]
at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) ~[spring-web-5.2.10.RELEASE.jar:5.2.10.RELEASE]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.2.10.RELEASE.jar:5.2.10.RELEASE]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-9.0.39.jar:9.0.39]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-9.0.39.jar:9.0.39]
at org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.doFilterInternal(WebMvcMetricsFilter.java:93) ~[spring-boot-actuator-2.3.5.RELEASE.jar:2.3.5.RELEASE]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.2.10.RELEASE.jar:5.2.10.RELEASE]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-9.0.39.jar:9.0.39]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-9.0.39.jar:9.0.39]
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) ~[spring-web-5.2.10.RELEASE.jar:5.2.10.RELEASE]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.2.10.RELEASE.jar:5.2.10.RELEASE]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-9.0.39.jar:9.0.39]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-9.0.39.jar:9.0.39]
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202) ~[tomcat-embed-core-9.0.39.jar:9.0.39]
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97) ~[tomcat-embed-core-9.0.39.jar:9.0.39]
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:542) ~[tomcat-embed-core-9.0.39.jar:9.0.39]
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:143) ~[tomcat-embed-core-9.0.39.jar:9.0.39]
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) ~[tomcat-embed-core-9.0.39.jar:9.0.39]
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78) ~[tomcat-embed-core-9.0.39.jar:9.0.39]
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343) ~[tomcat-embed-core-9.0.39.jar:9.0.39]
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:374) ~[tomcat-embed-core-9.0.39.jar:9.0.39]
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) ~[tomcat-embed-core-9.0.39.jar:9.0.39]
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868) ~[tomcat-embed-core-9.0.39.jar:9.0.39]
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1590) ~[tomcat-embed-core-9.0.39.jar:9.0.39]
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) ~[tomcat-embed-core-9.0.39.jar:9.0.39]
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) ~[na:na]
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) ~[na:na]
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) ~[tomcat-embed-core-9.0.39.jar:9.0.39]
at java.base/java.lang.Thread.run(Thread.java:834) ~[na:na]

jOOQ 3.14 添加了对通过 gson 或 Jackson 将 JSON 映射到任意类的支持。此处记录了这一点:https://www.jooq.org/doc/latest/manual/sql-execution/fetching/converter-provider

请注意,这是一个每列数据类型转换功能,由 jOOQ 调用DefaultConverterProvider, not a RecordMapper特征。经过更多讨论,这似乎是一个错误RecordMapper,它没有为 Jackson 提供在您的情况下尽可能多的通用类型信息:

  • https://github.com/jOOQ/jOOQ/issues/11008
  • https://github.com/jOOQ/jOOQ/issues/11213

该错误已在 jOOQ 3.15.0 和 3.14.10 中修复

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Jooq fetchInto 类 java.util.LinkedHashMap 无法转换为类 的相关文章

随机推荐

  • IE8 jQuery 淡入淡出

    HTML 标记 ul li class web span class info August 2007 a href http awebsite com visit a span a href assets image jpg class
  • Grails 控制器中操作和方法之间的差异

    据我所知 如果我想在控制器中创建一个动作 那么我可以通过以下方式完成 class My Controller def myAction println in my action 或者我可以通过以下方式创建它 class My Control
  • FragmentManager 替换使覆盖

    我正在使用 supportlib v4 来达到主从流程 问题 详细信息 片段的新实例覆盖第一个实例 创建的 xml 而不是替换它 我的活动布局是
  • 像 NSNumber 一样对 NSString stringWithFormat 进行装箱

    我们可以像这样创建一个 NSNumber NSNumber number NSNumber numberWithFloat 4 5 or NSNumber number 4 5 or NSNumber number 4 5 我知道我们可以使
  • 如果导入 iostream 为什么要使用命名空间

    我是 C 初学者 最近接触了 std 等命名空间 但是 如果像 cout 和 endl 这样的函数是在 iostream 头文件中定义的 为什么还要包含 std 命名空间呢 或者这些函数实际上是在 std 命名空间中定义的吗 如果是这样 那
  • 精度为 2 的小数的简单正则表达式

    精度为 2 的小数的正则表达式是什么 有效示例 123 12 2 56754 92929292929292 12 0 21 3 1 无效示例 12 1232 2 23332 e666 76 小数点可以是可选的 也可以包括整数 有效的正则表达
  • 如何从点列表中找到最近的坐标?

    假设我有一个 x y 坐标列表 如下所示 A 26 63 23 63 22 63 21 63 20 63 22 62 27 63 我有一个点的 x y 坐标 如下所示 leftbottom 0 238 现在 我想找到距离最近的点leftbo
  • Marshal.FreeHGlobal() 如何工作?

    我有一个基于 C 的 UI 它使用基于 C 的 DLL 我的要求是将一大块内存从 C 传递到 DLL DLL 将写入此内存缓冲区并将其传回 C 我已经使用 IntPtr 和全局内存函数来执行此操作 一切正常 问题是 如何验证 Marshal
  • 将 Inno Setup WizardForm.Color 转换为 RGB

    如果我尝试这个 Setup AppName MyApp AppVerName MyApp DefaultDirName pf MyApp DefaultGroupName MyApp OutputDir Code function Colo
  • 如何使用 Tidhttp 发出带有名为 xml 的参数的 Get 请求?

    我已成功使用 Delphi 2010 发出 http get 请求 但对于一项需要名为 xml 的参数的服务 请求失败并出现 HTTP 1 1 400 Bad Request 错误 我注意到调用相同的服务并省略 xml 参数是有效的 我尝试
  • 将文件内容重定向到php中的标准输入

    我有一个文件abc txt内容如下 hello hi good bad 现在 如何将文件的内容逐行重定向到php脚本的标准输入 这样当执行 php 脚本时 它可以通过以下任何命令收集输入 f fopen php stdin r line f
  • 视图状态 MAC 验证失败。应用程序由 Web Farm 托管,请确保 配置 [重复]

    这个问题在这里已经有答案了 Net 4 0框架 我在这个框架中制作了很多网站 但从未遇到过这样的错误 Validation of viewstate MAC failed If this application is hosted by a
  • 如何从最新版本的 Hyperledger Fabric 检索用户信息?

    我是 Hyperledger Fabric 的新手 在当前版本的 Hyperledger Fabric 中 在 chaincode go 中我找不到名为 ReadCertAttributes 的函数 有什么办法可以获取属性吗 从 Hyper
  • 返回文件或视图的方法

    我正在使用下面的 jquery 来调用GetFile方法 我想根据某些条件生成一个文本文件 这并不总是 始终生成一个文本文件 如果条件 True 生成文件 如果条件 False 返回主页 现在如果我回来 我只会得到一张空白页 我该如何写才能
  • Oracle PLSQL:xmltype.transform 与 xmltransform

    由于我们已将数据库从 11 2 0 2 0 移动到 11 2 0 4 0xmltype transform函数有特定的行为 问题是 之前它不能正常工作 它用开闭版本替换了所有标签 例如 它确实替换了 br with br 但我可以忍受 现在
  • 打印有序链表

    只是做了一些编辑 我尝试了你所说的 但它不起作用 所以我尝试了一些我更熟悉的东西 但它似乎无法正常工作 它奇怪地打印信息然后崩溃 例如 当我输入 9 8 7 6 5 4 3 2 1 然后输入 0 进行打印时 它会打印回给我 0 0 0 9
  • 列出“tkinter”中可用的字体系列

    In many tkinter那里有可用的示例 您可能会看到类似以下内容 canvas create text x y font Helvetica 12 text foo 但是 在您的计算机中运行时这可能不起作用 结果将完全忽略字体参数
  • 实体框架5性能不佳

    我有 5 个实体 public class Album public int Id get set public string Title get set public virtual List
  • “pygame.Surface”对象的描述符“get_at”不适用于“tuple”对象

    我正在创建一个程序 并且如果光标位置处的像素还不是黑色 则尝试在光标位置绘制一个矩形 if pygame Surface get at pygame mouse get pos 0 0 0 255 pygame draw rect win
  • Jooq fetchInto 类 java.util.LinkedHashMap 无法转换为类

    给出最后一个例子这个所以线程 我收到此错误 java lang ClassCastException class java util LinkedHashMap cannot be cast to class com example dto