Ошибка JDBC BatchUpdate при предоставлении SqlParameterSource в kotlin - PullRequest
0 голосов
/ 07 марта 2019

Мой список UserRespMappings не пропускает никаких значений, и кажется, что классы @data генерируют методы получения / установки для своих свойств по умолчанию, поэтому приведенное ниже исключение вводит в заблуждение. Я только что столкнулся с странной ошибкой в ​​Kotlin?

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 ': недопустимое свойство' userPrincipalName 'класса бина [[L-hidden-.UserRespMapping;]: Свойство bean-компонента 'userPrincipalName' недоступно для чтения или содержит недопустимый метод получения: соответствует ли тип возвращаемого значения метода получения параметру установщика? '

1 Ответ

0 голосов
/ 07 марта 2019

Я вместо этого использовал jdbcTemplate.Намного менее читабельный, но я по крайней мере теперь разблокирован.С удовольствием приму любые исправления в приведенном выше коде, хотя - спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...