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
来解决此问题吗?
答案 0 :(得分:3)
只需将其提取到Integer
中即可,而不是int
。
答案 1 :(得分:1)
int
是Java中的基元,不能为null
。
BeanPropertyRowMapper
无法将null
转换为int
,因此引发了异常。
要解决此问题,您可以:
int
字段更改为Integer
,并在映射后获取null
setPrimitivesDefaultedForNullValue
至true
上的BeanPropertyRowMapper
但是请记住
如果使用生成的bean中的值更新数据库,则原始值将被设置为原始值的默认值,而不是
null
。