kotlin - jOOQ fetchInto 无法将 java.util.LinkedHashMap 转换为类
问题描述
如本相关问题中所述,我想使用 jOOQ (3.14.4) 将结果集映射到使用fetchInto
.
我有以下 SQL 表:USER
和USER_TO_ROLE
(ROLE
类似于此答案中假定的上下文)。此外,我使用具有以下 Jackson 依赖项的 PostgreSQL 13.1(具有jacksonVersion="2.11.3"
:
implementation("com.fasterxml.jackson.module:jackson-module-kotlin:$jacksonVersion")
implementation("com.fasterxml.jackson.core:jackson-databind:$jacksonVersion")
根据文档,以下 Kotlin 片段应将用户及其角色映射到给定的 Kotlin 类:
val select = mutableListOf<SelectField<out Any?>>(USER.ID, USER.USERNAME)
select.add(
field(
select(
jsonArrayAgg(
jsonObject(
jsonEntry("id", ROLE.ID),
jsonEntry("name", ROLE.NAME),
)
)
)
.from(ROLE)
.join(USER_TO_ROLE).on(ROLE.ID.eq(USER_TO_ROLE.ROLE_ID))
.where(USER_TO_ROLE.user().ID.eq(USER.ID))
).`as`("roles")
)
return dsl.select(select)
.from(USER)
.where(USER.ID.eq(id))
.fetchInto(User::class.java)
其中User
和Role
定义为:
data class User(
var id: UUID? = null,
var username: String? = null,
var roles: List<Role>? = null,
)
data class Role(
var id: UUID? = null,
var name: String? = null,
)
不幸的是,这会产生以下异常(当用户与角色相关联时):
无法从 {id=<UUID>, name=<String>}(java.util.LinkedHashMap 类)转换为 com.example.demo.Role 类
我认为添加杰克逊会解决前面提到的相关问题中提出的问题,但事实并非如此。
我错过了什么吗?
解决方案
推荐阅读
- javascript - 如何“观察” .onchange 数组中的所有元素
- r - 使用 Rmarkdown 生成 pdf 文件失败
- java - 通过单击 JButton 清除 JTextField
- r - 在 R 中计算数据并生成行
- c# - 无法将 System.IServiceProvider 类型隐式转换为 ServiceProvider
- php - 按客户分组随机发票列表
- reactjs - TypeError: this.props.setLoginDisabled 不是函数
- android - Android Q Beta - 从包裹创建时 ContentValue 为空
- azure - 如何在扩展时监控函数应用的实例数量?
- python - 如何检测字符串是否是代码块?