Я хотел бы реализовать свой собственный RecordMapper
и использовать Mapstruct для сопоставления Записи с POJO. Я не совсем понимаю, как это сделать. Я следовал этой части документов: https://www.jooq.org/doc/3.13/manual/sql-execution/fetching/pojos-with-recordmapper-provider/
Мой картограф выглядит так:
public class LanguageMapper<R extends Record, E> implements RecordMapper<R, Language> {
@Override
public Language map(R record) {
LanguageRecord languageRecord = (LanguageRecord) record;
// this is just an example, in the future this is the kind of mapping that would be performed automatically via mapstruct
return new Language(
languageRecord.getId(),
languageRecord.getNamespaceId(),
languageRecord.getLanguage(),
languageRecord.getCountryCode(),
languageRecord.getLanguageTag()
);
}
}
Проблема в том, что как record
я на самом деле не получает LanguageRecord
, а RecordImpl
моей языковой таблицы и поэтому не может привести record
к LanguageRecord
. Любая идея, что мне нужно изменить?
Что интересно при использовании RecordImpl
, если я сделаю что-то вроде этого
record.get(LANGUAGE.LANGUAGE_TAG);
Он уже получит неверную информацию (он получает LANGUAGE.NAMESPACE_ID). Таким образом, при получении этого и последующем сопоставлении его с POJO это также будет неправильно.
(Создан этот вопрос на основе этого вопроса Отображение POJO в JOOQ независимо от порядка параметров )