我正在尝试在H2数据库中为我的NUMBER列插入NULL值。 在我的Java模型中,相应的值是Long(不是原始的)。现在,我知道如果没有指定,JDBC驱动程序如何为空值插入0,但我确实如此。 我的DAO层在Spring中,对于这个确切的列,我以这种方式映射它的值。
if(user.getDefaultNumber() == null){
map.addValue("defaultNumber", user.getDefaultNumber(), Types.NULL);
}else{
map.addValue("defaultNumber", user.getDefaultNumber());
}
但是,这似乎不起作用。我已将其深入到Spring Core类中,并且我的对象的null值已存在,但在某处它仍然会变为0.
有人可以帮助我,这让我困扰了好几天。
答案 0 :(得分:0)
答案 1 :(得分:0)
问题的解决方案是添加Types.Integer。我仍然不确定为什么它不适用于Types.NULL但我会调查。现在这是解决方案
if(user.getDefaultNumber() == null){
map.addValue("defaultNumber", user.getDefaultNumber(), Types.INTEGER);
}else{
map.addValue("defaultNumber", user.getDefaultNumber());
}
此外,从DB读取时正确映射非常重要。 JDBC将从数据库中读取NULL,但它仍将在Java的属性中插入0。因此,如果阅读处理不当,可能会留下一个印象,即使写作部分确实没问题,问题仍然存在。