164

Spring Data JPAは、仕様を使用したエンティティのカウントをサポートしています。しかし、メソッド名解決を使用してエンティティをカウントする方法はありますか? 特定の名前を持つすべてのエンティティを取得countByNameするメソッドと同じように、特定の名前を持つエンティティをカウントするメソッドが必要だとしましょう。findByName

4

12 に答える 12

283

Spring Data 1.7.1.RELEASEの時点で、2 つの異なる方法で実行できます。

  1. count クエリと delete クエリの両方にクエリ派生を使用する新しい方法。これを読んでください(例 5)。例、
    public interface UserRepository extends CrudRepository<User, Integer> {
        long countByName(String name);
    }
  1. 古い方法@Query注釈を使用します。
    例、
    public interface UserRepository extends CrudRepository<User, Integer> {
        @Query("SELECT COUNT(u) FROM User u WHERE u.name=?1")
        long aMethodNameOrSomething(String name);
    }

または@Param注釈も使用して、

public interface UserRepository extends CrudRepository<User, Integer> {
    @Query("SELECT COUNT(u) FROM User u WHERE u.name=:name")
    long aMethodNameOrSomething(@Param("name") String name);
}

これもチェックして答えてください。

于 2014-12-13T12:07:04.193 に答える
5

どうやらそれは現在実装されていますDATAJPA-231

于 2013-05-16T14:39:45.160 に答える
4

ありがとうございます!さあ仕事だ。DATAJPA-231

count…By…メソッドをfind…Byと同じように作れたらいいな。例:

public interface UserRepository extends JpaRepository<User, Long> {

   public Long /*or BigInteger */ countByActiveTrue();
}
于 2016-11-03T05:27:51.447 に答える
1

私はそれを数週間しか使用していませんが、これが厳密に可能であるとは思いませんが、もう少し努力すれば同じ効果が得られるはずです。自分でクエリを書き、メソッド名に注釈を付けるだけです。おそらく自分でメソッドを書くよりも簡単ではありませんが、私の意見ではよりクリーンです。

編集: DATAJPA-231に従って可能になりました

于 2012-05-26T16:50:06.130 に答える
1

issue DATAJPA-231によると、この機能はまだ実装されていません。

于 2012-08-11T06:06:38.977 に答える