エンティティを取得およびカウントするメソッドの実装

エンティティを取得およびカウントするメソッドの実装

ご覧のページは、お客様の利便性のために一部機械翻訳されています。また、ドキュメントは頻繁に更新が加えられており、翻訳は未完成の部分が含まれることをご了承ください。最新情報は都度公開されておりますため、必ず英語版をご参照ください。翻訳に問題がある場合は、こちらまでご連絡ください。

Service Builderは、 service.xml ファイルの ファインダー基づいて、 個のfindBy * メソッドと 個のcountBy * メソッドを * Persistence クラス に生成します。 ローカルサービスのファインダーメソッドを活用して、エンティティを取得およびカウントできます。

  • Gettersget * メソッドは、条件に一致するエンティティインスタンスを返します。
  • カウンターget * Count メソッドは、条件に一致するインスタンスの数を返します

基準に一致するエンティティの取得から始めます。

ゲッターメソッド

findByPrimaryKey メソッドと findBy * メソッドは、条件に基づいてエンティティインスタンスを検索して返します。 ローカルサービスの実装は、必要なものを取得するファインダーメソッドへの呼び出しのみをラップする必要があります。

ID(主キー)に基づいてエンティティを取得するメソッドを作成する方法は次のとおりです。

  1. この形式を使用してメソッドを作成します。

    public [ENTITY] get[ENTITY_NAME](long id) {
        return [ENTITY]Persistence.findByPrimaryKey(id);
    }
    
  2. [ENTITY] および [ENTITY_NAME] をそれぞれのエンティティタイプとエンティティ名(またはニックネーム)に置き換え` 。

  • Service Builderを実行して、メソッドをローカルサービスインターフェイスに伝達します。

  • 基準に基づいてエンティティを取得する方法は次のとおりです。

    1. エンティティインスタンスを見つけるための基準を特定します。

    2. 基準に finder` 要素 がない場合は、その要素を作成してService Builderを実行します。

      1. 呼び出す * Persistence class findBy * メソッドを決定します。 ファインダー 要素の列によっては、Service Builderがメソッドをオーバーロードしてこれらのパラメーターを含める場合があります。

        • int start および int end の範囲のエンティティを指定するパラメーター。
        • com.liferay.portal.kernel.util.OrderByComparator orderByComparator 一致するエンティティを配置するためのパラメーター。
      2. get * メソッドシグネチャを指定し、 * Persistence クラス findBy * メソッドパラメーターを必ず満たしてください。 次のメソッド形式を使用します。

        public List <[ENTITY]> get[DESCRIBE_THE_ENTITIES](...){
        
        }
        

        [ENTITY] をエンティティタイプに置き換え。 <code>[DESCRIBE_THE_ENTITIES] を、取得するエンティティのわかりやすい名前に置き換えます。

      3. * Persistence class findBy * メソッドを呼び出して、一致するエンティティのリストを返します。

      4. Service Builderを実行します。

      たとえば、メソッド getGroupEntries from BookmarksEntryLocalServiceImpl は、 Group プライマリキーに関連付けられた BookmarksEntryの範囲を返します。

      public List<BookmarksEntry> getGroupEntries(
          long groupId, int start, int end) {
      
          return bookmarksEntryPersistence.findByG_S(
              groupId, WorkflowConstants.STATUS_APPROVED, start, end,
              new EntryModifiedDateComparator());
      }
      

      ワークフローに関連付けられている BookmarksEntryのうち、このメソッドは承認されたもの(WorkflowConstants.STATUS_APPROVED)のみに一致します。 新しい EntryModifiedDateComparator を使用して、一致する BookmarksEntryを変更日順に並べます。

      これで、ファインダーメソッドを活用してエンティティを取得する方法がわかりました。 エンティティをカウントするメソッドが次にあります。

      カウンターメソッド

      エンティティのカウントは、取得するのと同じくらい簡単です。 * Persistence class countBy * メソッドがすべての作業を行います。 Service Builderは、各ファインダーとその列に基づいて countBy * メソッドを生成します。

      1. カウントしているエンティティインスタンスの基準を特定し、基準を満たす * Persistence class countBy * メソッドを決定します。

      2. この形式に従って、 get * Count メソッドシグネチャを作成します。

        public int get[DESCRIBE_THE_ENTITIES]Count(...) {
        
        }
        

        [DESCRIBE_THE_ENTITIES] を、カウントするエンティティのわかりやすい名前に置き換えます。

      3. * Persistence クラスの countBy メソッドを呼び出し、値を返します。 たとえば、メソッド getEntriesCount from BookmarksEntryLocalServiceImpl は、ワークフローステータスが ステータス で、グループ( 一致するgroupId)およびフォルダー( 一致する)に関連付けられた <code>BookmarksEntryの数を返します。 folderId)。

        public int getEntriesCount(long groupId, long folderId, int status) {
            return bookmarksEntryPersistence.countByG_F_S(
                groupId, folderId, status);
        }
        

      これで、ローカルサービスは条件に一致するエンティティを取得し、素早いエンティティカウントを返すことができます。

      関連トピック

      ローカルサービスの作成

      addメソッドの実装

      サービスエンティティファインダーメソッドの定義

      Service Builderによって生成されたコードを理解する

    この記事は役に立ちましたか?
    0人中0人がこの記事が役に立ったと言っています