一尘不染

Spring Data JPA是否可以使用方法名称解析来计数实体?

spring

Spring Data JPA支持使用规范对实体进行计数。但是,它有什么方法可以使用方法名称解析来计数实体?假设我要一种方法countByName来计算具有特定名称的实体,就像findByName获取所有具有特定名称的实体的方法一样。


阅读 443

收藏
2020-04-19

共1个答案

一尘不染

从Spring Data 1.7.1.RELEASE开始,你可以使用两种不同的方法来实现它,

1)新方法,对计数和删除查询都使用查询派生。例,

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

2)旧方法,使用@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);
}
2020-04-19