2015-02-04 68 views
0

我從Java調用這樣一個MySQL存儲過程:MySQL存儲過程調用手工作品,而不是從Java

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
  1. 你肯定是越來越執行的代碼?
  2. 是變量countrysomeId實際上是正確的?
  3. SQLException說什麼?
  4. 我會收到連接成功 - Connection con = session.connection();
  5. 你傳遞正確類型的變量(你應該送Int代替String)?
+0

我會發布這個「答案」作爲問題的評論,但它似乎我需要更多的聲譽來做到這一點.. – atastrumf

+0

我將如何查看SQLException?是的變量絕對正確。另外,我正在通過執行存儲過程來調試代碼 - 但我無法進入它。 –

+0

我的意思是什麼跟,這是,如果你得到任何異常拋出,但如果你通過它調試,我想你會看到是否會發生.. – atastrumf