###前提・実現したいこと
JavaとJavaScriptで論理削除をやっている時にちょっと動作が今一分からなくなりました。教えて頂けると幸いです。
###発生している問題・エラーメッセージ
パラメータを渡して、論理削除を行っているのですが、↓のソースの
// トランザクションの取得 TransactionManager tm = AppConfig\.singleton\(\)\.getTransactionManager\(\); vResult = tm\.required\(\(\) -> {
↑の部分で次のtry-catch文を通らずに下まで行ってしまい、エラーが返ってくるのですが、エラーがあっても、論理削除は行われていて、困っています何かおかしい部分があるでしょうか。
###該当のソースコード
/\*\* \* 論理削除 \*/ @POST @Path\("/PC005/delete"\) @Consumes\(MediaType\.APPLICATION_JSON\) @Produces\(MediaType\.APPLICATION_JSON\) public int execute1\(LinkedHashMap<String, Object> data\){ //初期化 int vResult = -99; //引数よりデータ取得 List<LinkedHashMap<String,Object>> delInfo = Utility\.autoCast\(data\.get\("inputData"\)\); //TODO:パラメータの中に'inputData'が存在しない場合はエラー if \(delInfo == null\){ vResult = -98; } // トランザクションの取得 TransactionManager tm = AppConfig\.singleton\(\)\.getTransactionManager\(\); vResult = tm\.required\(\(\) -> { try{ LinkedHashMap<String,Object> info = delInfo\.get\(0\); // LinkedHashMap<String,Object> info = Utility\.autoCast\(delInfo\.get\(0\)\) String term = \(String\)info\.get\("term"\); String pgmId = \(String\)info\.get\("pgmId"\); String eigyoCd = \(String\)info\.get\("eigyoCd"\) ; String workKbn = \(String\)info\.get\("workKbn"\) ; int updateCount = \(Integer\)info\.get\("updateCount"\) ; MWorkKbnDao daoMWorkKbn = new MWorkKbnDaoImpl\(\); //MWorkerInfoデータ存在チェック MWorkKbn MWorkKbnDto= daoMWorkKbn\.selectById\(eigyoCd , workKbn \); if\(MWorkKbnDto == null\){ //更新対象存在なしのためエラー tm\.setRollbackOnly\(\); return -5; } //MWorkerSkillにあるデータがあるか否か。 MWorkerSkillDao daoMWorkerSkill = new MWorkerSkillDaoImpl\(\) ; MWorkerSkill MWorkerSkillDto = daoMWorkerSkill\.selectWorkerSkillMWorkKbn\(eigyoCd , workKbn\) ; if\( MWorkerSkillDto != null\){ //存在しているから論理削除中止。 tm\.setRollbackOnly\(\); return -3 ; } //更新回数チェック(データ存在チェック込) if\(MWorkKbnDto\.getUpdateCount\(\) != updateCount\){ //更新回数が異なる(他プロセスですでに更新されている)ため、エラー tm\.setRollbackOnly\(\); return -6; } //削除 setDelteContentsInfo\(MWorkKbnDto,info,term,pgmId\); //MWorkerInfoの更新 daoMWorkKbn\.deleteupdateMWorkKbn\(MWorkKbnDto\); }catch\(Exception e\){ e\.getStackTrace\(\); tm\.setRollbackOnly\(\); return -99; } return 0; }\); return vResult; } var WorkKbn = new Object; WorkKbn\['eigyoCd'\] = eigyoCd WorkKbn\['workKbn'\] = workKbn ; WorkKbn\['workName'\] = workName ; WorkKbn\['updateCount'\] = updateCount ; var jsonData = new Object\(\); jsonData\['inputData'\] = new Array\(\); jsonData\['inputData'\]\.push\(WorkKbn\); \$\.ajax\({ url: API_PATH \+ '/PC005/delete', type: 'POST', data: JSON\.stringify\(jsonData, null, ''\), contentType: 'application/JSON', dataType : 'JSON', }\) \.done\(saveDone\) \.fail\(saveFail\); /\*\* \* 保存成功 \* \*/ function saveDone\(result\){ alert\(result\) ; switch\(result\){ case 0: alert\("正常に論理削除完了しました\\n再表示します"\); //再読み込み location\.reload\(\) ; break; case 3: alert\("論理削除対象データが別のマスタで登録されているデータです\\n論理削除を中止します"\); //再読み込み location\.reload\(\) ; break; case -6: alert\("論理削除対象データがすでに別プロセスで更新されています"\); break; case -98: alert\("パラメータエラー"\); break; case -99: alert\("論理削除:保存に失敗しました"\); break; } }
###補足情報(言語/FW/ツール等のバージョンなど)
JavaとJavaScriptをEclipseで開発しています。