2014-05-23 25 views
9

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

下不起作用:

class MyEntity { 
     private boolean active; 
} 


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

回答

14

我会做:

interface MyEntityRepository implements CrudRepository<MyEntity, Long> { 
    List<MyEntity> findByActive(Boolean active); 
} 

然后,服务层将

public class MyEntityServiceImpl implements MyEntityService{ 


    public List<MyEntity> findActive() { 
     return myEntityRepository.findByActive(true); 
    } 
} 

UPDATE

正如指出的@OliverGierke你可以更加简化您的存储库这样做:

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

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

查询创建

reference documentation

+0

确定这可能比直接将结果绑定到布尔值更好。 – membersound

+0

@membersound可能是的! – geoand

+8

很好的答案,如果您不想为每个调用提供参数,您可能希望添加选项以直接使用'findByActiveTrue()'。 –