2015-02-04 2 views
0

Я звоню MySQL хранимой процедуры из 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
  1. Вы уверены, что код исполняется?
  2. Переменные country и someId действительно правильный?
  3. Что говорит SQLException?
  4. Получите удачное соединение - Connection con = session.connection();?
  5. Вы передаете правильные типы переменных (следует ли отправлять Int вместо String)?
+0

Я бы разместил этот «ответ» в качестве комментария к вопросу, но, похоже, мне нужна больше репутации, чтобы сделать это. – atastrumf

+0

Как бы я посмотрел SQLException? Да, переменные определенно правильны. Кроме того, я отлаживаю код через выполнение хранимой процедуры, но я не могу войти в него. –

+0

То, что я имел в виду, было, если вы получили какие-либо исключения, но если вы отлаживаете его, я думаю, вы увидите, что это произойдет .. – atastrumf

Смежные вопросы