Spring SimpleJDBCInsert:当列值扩展列长度时,插入查询被阻止

时间:2016-01-21 06:01:58

标签: spring

当我尝试使用SimpleJDBCInsert在表中插入记录并使列的值大于列长度时,查询不会执行,不会抛出任何异常,并阻止进一步的代码流。
当我检查Mysql完整处理列表时,在代码到达insert statmemt之后,要触发查询的数据库显示在SLEEP中

我通过将列值截断为应用程序中模式的列长来纠正了这个问题。

示例代码示例:

public class BlogDaoImpl implements BlogDao {  
    private SimpleJdbcTemplate simpleJdbcTemplate;  
    private SimpleJdbcInsert insertBlog;  

    public void setDataSource(DataSource dataSource) {  
        this.simpleJdbcTemplate = new SimpleJdbcTemplate(dataSource);  
        this.insertBlog =   
                new SimpleJdbcInsert(dataSource)  
                 .withTableName("BLOG");  
                 .usingGeneratedKeyColumns("id");  
    }  

    public void create(String name, Integer age, Long salary) {  
        Map parameters = new HashMap();  
        parameters.put("city_id", "Vancouver");  
        parameters.put("blogger", "Bay Max");   
        Number id = insertEmp.executeAndReturnKey(parameters);  
    }  


}  

在这种情况下,如果Mysql数据库中的city_id长度为VARCHAR(2),则代码将被阻止在Number行id = insertEmp.executeAndReturnKey(参数);

有兴趣知道,Spring应该抛出一个JDBC例外 数据截断:列或任何其他异常的数据太长。

0 个答案:

没有答案