使用spring-data-jpa查询方法加载实体的属性

时间:2016-01-30 13:22:16

标签: java spring jpa

例如,我的实体User包含字段idactive和另外10个字段。 我如何获得所有活跃的用户?易:

public interface UserRepository extends JpaRepository<User, Integer> {
    List<User> findAllByActiveTrue();
}

如何加载id活跃用户列表?我需要一个@Query注释来自己编写JPQL,如下所示:

public interface UserRepository extends JpaRepository<User, Integer> {
    @Query("select u.id from User u where u.active = true")
    List<Integer> fetchActiveUsersIds();
}

我的问题是:我可以用某种方式命名一种避免自己编写JQPL的方法,就像第一种情况一样吗?

更新

我需要这样的东西:

public interface UserRepository extends JpaRepository<User, Integer> {
    List<Integer> findAll_Id_ByActiveTrue();
}

1 个答案:

答案 0 :(得分:0)

我认为这是不可能的。 Repository的主要目的是管理域类的持久性。它不会独立管理属性。在Spring Data Repositories documentation中,您可以找到CrudRepository可用方法的列表。

您可以使用property extensions撰写查询,但它始终会返回非聚合方法的域类

对于您提及的特定用例,您需要使用@Query注释。