无法从spring mysql获得准备好的声明

时间:2015-07-26 17:39:58

标签: spring jdbc prepared-statement jdbctemplate

我在春天的服务中创建了一份准备好的声明。这很简单,但很长。最初,它正在运作,但不再是。

以下是代码:

        String sql = "insert into myData.myTable " +                    
            "   (version_id, "+
            "   Category, "+
            "   my_name, "+
            "   my_id,  "+
                ...bunch of fields ....
            "   lastField   "+
            "   )                   "+
            "   select              "+
            "   ?,              "+
            "   Category,       "+
            "   ?,              "+
            "   lastField       "+
            "   from myData.myOtherFile where my_id = ?";

        Connection conn = dataSource.getConnection();
        PreparedStatement  ps = conn.prepareStatement(sql);
        ps.setLong(1, version.getId());
        ps.setString(2, pp.getName());
        ps.setLong(3, pp.getMyId());

        ps.executeUpdate();
        ps.close(); 

现在,它没有用。没有例外或任何事情 - 它只是不插入。我也尝试过使用JdbcTemplate,虽然当我执行hibernate显示的SQL语句时它没有用,但它确实有效。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我从JDBC解决方案开始,并创建了一个存储过程来解决这个问题。我仍然不知道为什么它不起作用,但我有一个很好的想法,存储过程会。为什么?因为它消除了JDBC层,显然发生了问题。但是有一个警告 - 我必须在一个单独的事务中调用存储过程,否则其他一些表没有被正确插入。