如何使用Spring CrudRepository查询布尔属性?

mem*_*und 10 java spring spring-data spring-data-jpa

我正在使用Spring CrudRepository进行数据库查询.如何为布尔属性创建方法签名(不是自己编写SQL select语句)?

以下不起作用:

class MyEntity {
       private boolean active;
}


interface MyEntityRepository implements CrudRepository<MyEntity, Long> {
   List<MyEntity> findActive(); //or also: findNotActive();
}
Run Code Online (Sandbox Code Playgroud)

geo*_*and 19

我会做:

interface MyEntityRepository implements CrudRepository<MyEntity, Long> {
   List<MyEntity> findByActive(Boolean active);
}
Run Code Online (Sandbox Code Playgroud)

那么服务层就是

public class MyEntityServiceImpl implements MyEntityService{


   public List<MyEntity> findActive() {
      return myEntityRepository.findByActive(true);
   }
}
Run Code Online (Sandbox Code Playgroud)

UPDATE

正如@OliverGierke所指出的,您可以通过以下方式进一步简化您的存储库:

interface MyEntityRepository implements CrudRepository<MyEntity, Long> {
   List<MyEntity> findByActiveTrue(); //you could also use findByActiveFalse
}
Run Code Online (Sandbox Code Playgroud)

对于所有受支持的关键字,您应该看到该部分

查询创建

所述的参考文献

  • 很好的答案,你可能想添加选项直接使用`findByActiveTrue()`,以防你不想为每个调用提供参数. (9认同)