Пустое значение преобразователя JdbcTemplate - PullRequest
0 голосов
/ 12 апреля 2019

POJO с Lombak:

@NoArgsConstructor
@AllArgsConstructor
@Getter @Setter
public class Order {
    private int Id;
    private int OrderId;
    private String Status;
}

Используя JdbcTemplate Я выбираю запись:

String sql = "SELECT Id, OrderId, Stataus" +
                "ORDER BY t.Sort";
        return jdbcTemplate.query(sql, new Object[]{IDU}, new BeanPropertyRowMapper<>(Order .class));

Так как для некоторого OrderId установлено значение null, я получаю эту ошибку:

Failed to convert property value of type 'null' to required type 'int' for property 'OrderId';

Могу ли я решить эту проблему, не используя custom mapper?

Ответы [ 2 ]

3 голосов
/ 12 апреля 2019

Просто загрузите его в Integer вместо int.

1 голос
/ 12 апреля 2019

int является примитивом в Java и не может быть null.

BeanPropertyRowMapper не удалось преобразовать null в int, поэтому возникло исключение.

Чтобы исправить это, вы можете:

  • Изменить int укажите Integer и получите null после сопоставления
  • setPrimitivesDefaultedForNullValue до true на BeanPropertyRowMapper

Но помните, что

Если вы используете значения из сгенерированного компонента для обновления базы данных, примитиву будет присвоено значение по умолчанию примитива вместо null.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...