我的UserRespMappings列表没有丢失任何值,并且@data类默认情况下会为其属性生成getter / setter,因此以下异常具有误导性。我只是在Kotlin遇到了一个奇怪的springframework错误吗?
fun batchUpsertUserResponsibilityGroups(users: List<UserRespMapping>) {
var params = SqlParameterSourceUtils.createBatch(users.toTypedArray())
namedParameterJdbcTemplate.batchUpdate("""
INSERT INTO user_resp_groups (user_principal_name, responsibility_group_ids)
VALUES (:${UserRespMapping::userPrincipalName.name}, cast(:${UserRespMapping::responsibilityGroupIDs.name} as json))
ON CONFLICT (user_principal_name) DO UPDATE
SET responsibility_group_ids = EXCLUDED.responsibility_group_ids
""".trimIndent(), params
)
}
UserRespMapping.kt
data class UserRespMapping (
var userPrincipalName: String,
var responsibilityGroupIDs: String //jsonb
)
'线程“ -hidden-”中的异常org.springframework.dao.InvalidDataAccessApiUsageException:没有为SQL参数'userPrincipalName'提供值:Bean类[[L-hidden-.UserRespMapping;]的无效属性'userPrincipalName': Bean属性'userPrincipalName'不可读或具有无效的getter方法:getter的返回类型是否与setter的参数类型匹配?'
答案 0 :(得分:0)
我最终改为使用jdbcTemplate。可读性差很多,但我现在至少不受阻碍。会很高兴接受上面代码中的任何更正-谢谢。