データベースから削除するときには、「どの順番」でデータを削除するかが重要になってきます。
メッセージでは、添付ファイルや既読のテーブルが他にあり、注意する箇所があったのでまとめておきました。
順番としては、
- ユーザーが削除出来るでーたかどうかの判定
- 添付ファイルの削除
- 削除したいデータをデータベースのテーブルから削除
// messageがuserのものか判定 Integer user = ALEipUtils.getUserId(rundata); Integer messageOwner = message.getUserId(); if (!(messageOwner.equals(user))) { return false; } // messageの添付ファイルを削除 List<EipTMessageFile> files = MessageUtils.getEipTMessageFilesByMessage(messageId); ALDeleteFileUtil.deleteFiles( MessageUtils.FOLDER_FILEDIR_MESSAGE, MessageUtils.CATEGORY_KEY, files); // messageを削除 Database.delete(message); Database.commit();
メッセージは、データベースの2つ以上のテーブルのヒモづけのようにひもづけされているので、データベースから削除するコード自体は簡単です。