我在春天的服务中创建了一份准备好的声明。这很简单,但很长。最初,它正在运作,但不再是。
以下是代码:
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语句时它没有用,但它确实有效。
有什么想法吗?
答案 0 :(得分:0)
我从JDBC解决方案开始,并创建了一个存储过程来解决这个问题。我仍然不知道为什么它不起作用,但我有一个很好的想法,存储过程会。为什么?因为它消除了JDBC层,显然发生了问题。但是有一个警告 - 我必须在一个单独的事务中调用存储过程,否则其他一些表没有被正确插入。