У меня есть несколько репозиториев JOOQ, которые извлекают данные из БД Postgres и предоставляют данные в виде объектов-значений.Я использовал JOOQ 3.10.7 и все работает нормально.Я обновил версию с весенней загрузкой до 2.1.4 с 2.0.3, которая обновила версию JOOQ до 3.11.10.Я начал получать исключение NullPointerException при отображении записи Jooq.
try {
record = jooq.build()
.select(user.name)
.where(user.id.eq(1))
.fetchSingle();
} catch (NoDataFoundException e) {
return null;
}
return record.into(String.class);
В приведенном выше сценарии fetchSingle должен генерировать исключение NoDataFoundException, когда нет записи, соответствующей данному критерию (user.id.eq (1)).Но, по моим наблюдениям, это не вызывает исключение, а возвращает объект записи, который имеет поля как (user.name) и значение как «null».Это что-то ожидается?Я пытался использовать fetchOne().into(String.class)
, но та же проблема сохраняется.
Вот мой класс конфигурации JOOQ.
public class JooQJdbcImpl implements Jooq {
private final Settings defaultSettings = new Settings()
.withRenderNameStyle(RenderNameStyle.AS_IS);
private final RecordMapperProvider recordMapperProvider = new DefaultRecordMapperProvider();
@Autowired
DataSource dataSource;
@Override
public DSLContext build() {
return withSettings(defaultSettings);
}
@Override
public DSLContext withSettings(Settings settings) {
final Configuration configuration = new DefaultConfiguration()
.set(SQLDialect.POSTGRES_9_5)
.set(dataSource)
.set(recordMapperProvider)
.set(settings);
return DSL.using(configuration);
}
}