1
我有一個使用JPA的自定義實現來調用存儲過程的彈簧啓動應用程序。問題是,當執行調用時,我得到「在index :: 7處缺少IN或OUT參數」。「SQLException:缺少IN或OUT參數」儘管已明確註冊
實施看起來是這樣的:
public class DbLogImpl implements DbLogCustom {
@PersistenceContext
private EntityManager em;
@Override
public Long callInsertLog(Long firstId, Long secondId, Long process, Long subProcess, Long logLevelId, String message, String stacktrace) {
Long logId = null;
StoredProcedureQuery proc = em.createStoredProcedureQuery("logging_pk.insert_log");
proc.registerStoredProcedureParameter(0, Long.class, IN);
proc.registerStoredProcedureParameter(1, Long.class, IN);
proc.registerStoredProcedureParameter(2, Long.class, IN);
proc.registerStoredProcedureParameter(3, Long.class, IN);
proc.registerStoredProcedureParameter(4, Long.class, IN);
proc.registerStoredProcedureParameter(5, String.class, IN);
proc.registerStoredProcedureParameter(6, String.class, IN);
proc.setParameter(0, firstId);
proc.setParameter(1, secondId);
proc.setParameter(2, process);
proc.setParameter(3, subProcess);
proc.setParameter(4, logLevelId);
proc.setParameter(5, message);
proc.setParameter(6, stacktrace);
proc.registerStoredProcedureParameter(7, Long.class, OUT);
proc.execute();
logId = (Long) proc.getOutputParameterValue(7);
return logId;
}
}
我的包是這樣的:
如果這是我唯一的過程我很可能會具有不服輸,想另一種方法。我設法使用本機查詢,但實際上並沒有獲得輸出參數值。)
但是,我有另一個存儲過程調用,其設置完全像這個,並且工作正常。唯一的區別是參數的名稱和數量(工作人員有3個輸入和1個輸出,最後也是輸出)。
我不明白爲什麼一個工作正常,而另一個沒有。
編輯: 因爲我發現張貼了這個問題之前的問題,我決定省略了很多的代碼是無關的問題,但我會在這裏把這個留給他人找到。