Ошибка MyBatis при преобразовании результата в записи Java с ассоциациейJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Ошибка MyBatis при преобразовании результата в записи Java с ассоциацией

Сообщение Anonymous »

Мы переходим от использования Java Pojo в качестве DTO к записям с платформой MyBatis.
Используются следующие два типа записей:

Код: Выделить всё

public record User(Integer cprid, String inlognaam, String upn, Boolean actief, String email, Locatie locatie, Collection rolesExtra) {}

public record RoleExtra(Role role) { }
Идентификатором пользователя является cprid.
Местоположение и роль — это простые перечисления.
Наличие следующего запроса в myBatis:< /p>

Код: Выделить всё

SELECT g.inlognaam, g.cprid, g.upn, g.actief, g.email, g.locatie, grl.rol
FROM suez.gebruikers g
LEFT JOIN suez.gebruikers_rollen_link grl USING (cprid)
WHERE cprid = 107884
ORDER BY g.naam

результат в кортежах:

Код: Выделить всё

 inlognaam | cprid  |             upn             | actief |            email            | locatie |   rol
-----------+--------+-----------------------------+--------+-----------------------------+---------+---------
msmith    | 107884 | m.smith@amsterdamumc.nl     | t      | m.smith@amsterdamumc.nl     | AMC     | ROLE_PI
msmith    | 107884 | m.smith@amsterdamumc.nl     | t      | m.smith@amsterdamumc.nl     | AMC     | ROLE_PL
Использованные карты результатов: При вызове getAllUsers я получаю исключение:

Код: Выделить всё

Error instantiating class amr.bi.elsalvador.domain.suez.User with invalid types
(Integer,String,String,Boolean,String,Locatie,Collection) or values
(107884,msmith,m.smith@amsterdamumc.nl,true,m.smith@amsterdamumc.nl,AMC,**RoleExtra[role=Principal Investigator]**).
Cause: java.lang.IllegalArgumentException: argument type mismatch
Похоже, что MyBatis пытается создать два экземпляра User для каждой роли ROLE_PI и ROLE_PL (отсюда и несовпадение типов аргументов) вместо одного экземпляра, используя набор ролей.
Что я делаю не так?

Подробнее здесь: https://stackoverflow.com/questions/775 ... ssociation
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»