今天使用jdbctemplate 查询数据封装到 实体里面时出现以下错误,记录一下。
错误信息:
org.springframework.beans.TypeMismatchException:
Failed to convert property value of type 'null' to required type 'float' for property 'longitude’;
nested exception is org.springframework.core.convert.ConversionFailedException: Failed to convert from type [null] to type [float] for value 'null’;
nested exception is java.lang.IllegalArgumentException: A null value cannot be assigned to a primitive type
测试查询语句:
@Test
public void queryTest(){
String sql = "select * from DIM_WDS_POINT limit 10 ";
List<DimWdsPoint> dimWdsPoints = jdbcTemplate.query(sql, new Object[]{}, new BeanPropertyRowMapper<DimWdsPoint>(DimWdsPoint.class));
dimWdsPoints.forEach(System.out::println);
}
实体类:DimWdsPoint.class 的 longitude 属性
/**
* 经度
*/
private float longitude;
原因是 由于字段 longitude 在实体类中使用的是 float类型,但是数据库中查询出来的数据为null ,赋值的时候是不能把null 赋值给Java 基础类型的。
这里就有一个Java 的基础知识点:Java 基础类型不能为null。
解决办法:把实体映射的类型改为包装类型就OK。
private Float longitude;