私はjava springからストアドプロシージャを呼び出そうとしています。基本的に、このストアドプロシージャは、このテーブルにユーザーからの入力を挿入するだけです。mybatisストアドプロシージャコールがJavaスプリングから動作しない
これは私のストアドプロシージャです:
create or replace PROCEDURE TEST_ADDFT
(
FID IN RAW
, K IN VARCHAR2
, V IN VARCHAR2
) AS
BEGIN
INSERT INTO
ITCM_FT (FT_ID, KEY_ID, VALUE)
VALUES (FID, (SELECT KEY_ID FROM ITCM_KEY_VALUES
WHERE UPPER(KEY)=UPPER(K)),V);
END TEST_ADDFT;
だから私はすでに必要とされている(と思うこと)すべてを設定しました。また、ストアドプロシージャをデータベースに配置しました(私はこれに対してsqldeveloperを使用しました)。ここで
は、サービスの実装です:
@Transactional(readOnly = false, propagation = Propagation.REQUIRED,
rollbackFor = Exception.class)
public void addTest(final List<TestCost> tcData)
throws Exception {
try {
for (int i = 0; i < tcData.size(); i++) {
tcData.get(i).setFtId(Utils.generateUUID());
finalTestDao.addTest(tcData.get(i).getFtId(),
tcData.get(i).getKey(), tcData.get(i).getValue());
System.out.println("-=-=-=-=-= added?");
}
} catch (Exception e) {
Log.error("Add final test error", e);
}
}
は、ここに私のDAOです:
void addTest(@Param("ftId") String ftId, @Param("key") String key,
@Param("value") String value);
DAO.xml:
<select id="addTest" parameterType="String" statementType="CALLABLE">
{
CALL TEST_ADDFT (
#{ftId, mode=IN, jdbcType=RAW},
#{key, mode=IN, jdbcType=VARCHAR2},
#{value, mode=IN, jdbcType=VARCHAR2}
)
}
</select>
私はすでにTestCostオブジェクトのPOJOを設定しているとsqldeveloperを使用して記述された手順をテストしました。
私が理解できないのは、プロシージャが呼び出されていない理由です。コンソールにエラーは表示されませんでしたが、サービス実装(sysoutステートメント)の行10は実行されていません。皆さん、これについて何か考えていますか?あるいは、私はいくつかの構成が欠けていたでしょうか?
ありがとうございました!