Spring Data JPA有没有办法使用方法名称解析来计算entites?

2022-08-31 06:58:20

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


答案 1

Spring Data 1.7.1.RELEASE开始,你可以用两种不同的方式做到这一点,

  1. 新方法,对计数和删除查询都使用查询派生。阅读此文(示例 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);
}

也检查这个所以答案


答案 2

只要不使用 1.4 版本,就可以使用显式注释:

例:

@Query("select count(e) from Product e where e.area.code = ?1")
long countByAreaCode(String code);

推荐