質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

1回答

2281閲覧

JavaとJavaScriptで論理削除が何かへん!!

kurikara

総合スコア7

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2016/12/08 15:00

編集2017/04/14 02:46

###前提・実現したいこと
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で開発しています。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2016/12/08 23:12

フレームワークライブラリの情報
A-pZ

2016/12/09 01:53

ブレークポイントを設定してデバッグモードを実行し、どこまで処理が進んでいるのか、本当にTransactionManager中の処理に到達していないのかを確認してください。他にも「エラーが出ます」だとさすがに何のエラーなのかわかりませんので、可能であれば該当のエラーログを抜粋すると、より良い回答が得られるかもしれません。
guest

回答1

0

まず、try-catchを通らないのであれば、ロールバック以前に、tm.required(() が、怪しいですが・・・。

あと、 更新対象の存在チェックや更新番号でエラーとしているところも、
これらのエラーであれば、daoからアップデートは投げてないので、ロールバックの必要性が怪しいです。

daoMWorkKbn.deleteupdateMWorkKbn(MWorkKbnDto);

なぜならば、この文までは、更新を実施されていませんよね。

そも、try-catchに入ってないのであれば、開示されているソースは通っていないのですから、
開示されているソース以外のところで更新していませんか?

投稿2016/12/09 01:23

編集2016/12/09 01:24
akio221

総合スコア716

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問