Liferay IDE のサービス ビルダーを使用して、データベースの参照整合性を設定する方法を探しています。
例: マスター テーブル (エンティティ) と子テーブル (エンティティ) があります。子テーブルには、マスター テーブルの主キーである外部キーがあります。マスター テーブルのエントリを 1 つ削除すると、子テーブルのそれぞれの行も削除されます。Liferay Service Builder でこれを達成するにはどうすればよいですか。
Liferay IDE のサービス ビルダーを使用して、データベースの参照整合性を設定する方法を探しています。
例: マスター テーブル (エンティティ) と子テーブル (エンティティ) があります。子テーブルには、マスター テーブルの主キーである外部キーがあります。マスター テーブルのエントリを 1 つ削除すると、子テーブルのそれぞれの行も削除されます。Liferay Service Builder でこれを達成するにはどうすればよいですか。
できません.Service Builderはそれを提供しておらず、そのようなデータベースチェックで動作することも想定されていません. Service Builder の設計では、サービスは依存エンティティを削除する必要があります。あなたの例では、マスターテーブルを管理するサービスは、そのdelete
メソッドで、削除するマスター行を指す子行も削除する必要があります。これの良い例はJournalArticleLocalServiceImpl.deleteArticle(JournalArticle, String, ServiceContext)
メソッドで、例えば次のようにします:
journalArticleImageLocalService.deleteImages(
article.getGroupId(), articleId, article.getVersion());
// Expando
expandoRowLocalService.deleteRows(article.getId());