java - mysql存储过程调用可以手动工作,但不能从java中调用

标签 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;
            }
        });

未成功删除产品;但是当我手动运行它时,它确实如此。知道问题出在哪里吗?

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

最佳答案

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

关于java - mysql存储过程调用可以手动工作,但不能从java中调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28332456/

相关文章:

php - 影响删除的 MySQL 存储过程变量名称

sql-server - SQL MERGE INTO - 如何删除然后插入匹配/现有数据?

java - ResourcePool 无法从其主要工厂或来源获取资源

java - Android 应用程序名称显示为 "loading"

mysql - SQL查询价格检索

mysql - 如何在mysql中进行序号排名

java - 安卓SDK : findViewById(int) undefined for type

java - Android arraylist 因迭代而崩溃

php - MYSQL不等于'<>'不起作用。怎么解决呢?

sql-server - 使用本地数据库作为链接服务器时出现 "Deferred prepare could not be completed"错误