В моем приложении Spring Batch я читаю таблицу базы данных и сопоставляю ее с dto. У моего dto есть несколько полей типа boolean
.
Мой метод Dto и метод dao выглядят следующим образом:
public class MyDto {
private long id;
private String yyy;
private boolean xxx;
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getYyy() {
return id;
}
public void setYyy(String yyy) {
this.yyy = yyy;
}
public boolean getXxx() {
return xxx;
}
public void setXxx(boolean xxx) {
this.xxx = xxx;
}
}
@Override
public MyDto readMyDto(String id) {
SqlParameterSource paramMap = new MapSqlParameterSource(ID, id);
BeanPropertyRowMapper<MyDto > rowMapper = new BeanPropertyRowMapper<>(MyDto.class);
rowMapper.setPrimitivesDefaultedForNullValue(true);
try {
return this.jdbcTemplateStpl.queryForObject(LESE_KRAFTST_STEUERFALL, paramMap, rowMapper);
} catch (EmptyResultDataAccessException e) {
return null;
}
}
Я получаю Caused by: java.lang.IllegalArgumentException: Cannot convert value of type [null] to required type [boolean] for property 'xxx'
, хотя я установил setPrimitivesDefaultedForNullValue
на true
.
В моем UnitTests он работает правильно, даже с исключением. Когда я установлю setPrimitivesDefaultedForNullValue
на false
, тесты не пройдут, как ожидалось, с Caused by: java.lang.IllegalArgumentException: Cannot convert value of type [null] to required type [boolean] for property 'xxx'.
Является ли это исключение с setPrimitivesDefaultedForNullValue
, установленным на true
, ошибкой на моей стороне или Spring Batch, или это поведение ожидается, и BeanPropertyRowMapper перехватывает исключение и в данном случае по умолчанию принимает значение от нуля до false (логическое значение)?