шайтанства нет, мой дата-класс 1 в 1 повторяет структуру, что в бд
просто обхожу баг Эдера
override fun findByKeycloakId(keycloakId: String): User? {Читать полностью…
return db.select(
USERS.ID.convertFrom { it!! },
USERS.KEYCLOAK_ID.convertFrom { it!! },
USERS.EMAIL.convertFrom { it!! },
USERS.USERNAME.convertFrom { it!! },
USERS.FIRST_NAME,
USERS.LAST_NAME,
USERS.CREATED_AT.convertFrom { it!! },
USERS.UPDATED_AT
).from(USERS)
.where(USERS.KEYCLOAK_ID.eq(keycloakId))
.fetchOne(Records.mapping(::User))
}
ну конечно, ты же не сможешь условный String?, который тебе нагенерил жук положил в поле твоего дата класса, где String
Читать полностью…нормальный подход, когда выходит сообщение Приходите завтра, почему все время сегодня приходите.
Читать полностью…сколько параметров у функции перед, столько он попытается замаппить в соответствующий конструктор
Читать полностью…если у тебя интерфейс зависит от того, что нагенерила имплементация - это плохой дизайн
Читать полностью…Ну у меня это extension fun, которая в себе содержит несколько других, которые и логи пишут и ответ отправляют и мониторинг делают
Читать полностью…кстати... можно сделать свой объект со своим набором маппинга, где нужные филды уже будут конвертированы)
Читать полностью…Поддерживаю, репозиторий должен вернуть уже твоё дто, не зависимо от того что там под капотом - jooq/hibernate/etc
Читать полностью…Ну и я же не топлю за этот подход, но так, по фану и для общего развития можно было бы попробовать
Читать полностью…я делаю интерфейс
interface UserRepository {
fun findUser(id: UUID): User?
}
мой User не зависим от реализации