mysql存储过程调用是手动工作,但不是来自java

时间:2015-02-04 22:10:18

标签: java mysql stored-procedures

我从Java调用mysql存储过程,如下所示:

public void deleteMyProduct(final String country, final String someId) throws EntityDoesNotExistException {
        getHibernateTemplate().execute(new HibernateCallback() {

            public Object doInHibernate(final Session session) {
                session.clear();    
                Connection con = session.connection();
                try {
                    CallableStatement cst = con.prepareCall("{call deleteProduct( ?, ? )}");
                    cst.setString(1 , country);
                    cst.setString(2 , someId);
                    cst.execute();
                    cst.close();    
                }
                catch(SQLException e){
                    logger.error("Error deleting product, someId:  "+ someId, e);
                }
                return null;
            }
        });

未成功删除该产品;但是当我手动运行它时,确实如此。知道问题可能是什么?

P.S。存储过程非常大并且包含可识别的信息,因此我无权发布它。然而,它已经生产了一段时间,直到最近才停止工作。

1 个答案:

答案 0 :(得分:1)

  1. 您确定代码正在执行吗?
  2. 变量countrysomeId实际上是否正确?
  3. SQLException说什么?
  4. 获得成功的连接 - Connection con = session.connection();
  5. 您是否传递了正确类型的变量(如果您发送的是Int而不是String)?