971
社区成员




我的工程使用如下组件:
mybatis:3.5.6
spring-jdbc:5.3.27
postgresql:42.6.0
druid:1.0.2
配置的连接串也包含了stringtype=unspecified,让驱动把字符串当成未确定的类型传给pgsql服务器。
NamedParameterJdbcTemplate namedParameterJdbcTemplate = new NamedParameterJdbcTemplate(dataSource);
String strSQL = "insert into zgh_test(f1,f2,f3) values(:F1,:F2,:F3) ";
Map<String,Object> p = new HashMap<>();
p.put("F1",String.valueOf((new Date()).getTime()));
p.put("F2",String.valueOf((new Date()).getTime() * 1.0/1000.0));
p.put("F3",String.valueOf((new Date()).getTime() * 1.0/1000.0));
List<Map<String, Object>> query = namedParameterJdbcTemplate.execute(strSQL,p,new PreparedStatementCallbackImpl());
其中zgh_test表的F1是int8,f2是numeric,f3是varchar。
这种写法绝大部分是成功的,pgsql能够自动识别对应的类型,但有极少数的情况会报:
invalid input syntax for type integer: "28.039389"(这是样例);
而且一定是报integer,而不报其他类型的错误。
不仅插入还是更新还是查询,都有机会出现这个问题,出现概率大约是万分之五左右。
请问各位牛人,是否遇到这个问题?怎么复现(不一定要解决)
PS:
我现在的解决方法就是:
"insert into zgh_test(f1,f2,f3) values(:F1,:F2::numeric,:F3::varchar) ";