Does Spring Data JPA have any way to count entites using method name resolving?

YaoFeng picture YaoFeng · May 22, 2012 · Viewed 197.3k times · Source

Spring Data JPA supports counting entities using specifications. But does it have any way to count entities using method name resolving? Let's say I want a method countByName to count entities with specific name, just like a method findByName to fetch all entities with specific name.

Answer

George Siggouroglou picture George Siggouroglou · Dec 13, 2014

As of Spring Data 1.7.1.RELEASE you can do it with two different ways,

1) The new way, using query derivation for both count and delete queries. Read this, (Example 5). Example,

public interface UserRepository extends CrudRepository<User, Integer> {
    Long countByName(String name);
}

2) The old way, Using @Query annotation.
Example,

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

or using @Param annotation also,

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

Check also this so answer.