Java 不使用方法参数的spring数据jpa中的布尔属性查询

Java 不使用方法参数的spring数据jpa中的布尔属性查询,java,spring-data,spring-data-jpa,Java,Spring Data,Spring Data Jpa,在Spring数据JPA中是否可以通过布尔属性进行查询而不使用方法参数 基本上,我希望在不使用自定义@Query注释的情况下实现这一点: @Query("SELECT c FROM Entity c WHERE c.enabled = true") public Iterable<Entity> findAllEnabled(); @Query(“从实体c中选择c,其中c.enabled=true”) public Iterable findAllEnabled(); 查询创建有以

在Spring数据JPA中是否可以通过布尔属性进行查询而不使用方法参数

基本上,我希望在不使用自定义@Query注释的情况下实现这一点:

@Query("SELECT c FROM Entity c WHERE c.enabled = true")
public Iterable<Entity> findAllEnabled();
@Query(“从实体c中选择c,其中c.enabled=true”)
public Iterable findAllEnabled();
查询创建有以下方法

True    findByActiveTrue()  … where x.active = true
False   findByActiveFalse() … where x.active = false
我的猜测是使用

@Query
public Iterable<Entity> findByEnabledTrue();
@Query
public Iterable findByEnabledTrue();

甚至可以跳过
@Query
anotation。所以它应该像这样工作:

public Iterable<Entity> findByEnabledTrue();
public Iterable findByEnabledTrue();

谢谢,@orangegoat,但你确定它能用吗?它是在后来的Spring数据版本中引入的吗?我正在使用1.0.1,我得到了en异常:创建名为“entityRepository”的bean时出错:FactoryBean在创建对象时抛出异常;嵌套异常为java.lang.IllegalArgumentException:找不到booleanWell类型的属性true,它已在1.1.0.RC1版本(2012-02-03)中引入:“支持将true/False作为查询关键字(DATAJPA-132)”。将其标记为已接受,即使我无法测试它是否有效。我认为,如果您将其存储在数据库中为true/false,则该方法有效。如果您将其存储为'Y'/'N',这将产生x=1的结果,并且在将字符串与int进行比较时将失败。我必须这样使用它:findByX(布尔启用)来获得正确的查询。不确定为什么第一种情况下翻译没有按预期进行..跳过@Query?不太可能,只检索特定字段怎么样?在代码中,您正在从数据库中检索实体的所有字段,这些字段可能不是您想要的,因此,我添加了您的方法的另一个版本:public Iterable findByEnabledIsTrue();注意,Is或public Iterable findByEnabled(boolean done);然后将布尔值作为参数传递,您确实可以跳过@Query注释,因为Spring将仅根据方法名称的约定推断,但如果您只需要特定字段,则可能需要构建查询,但我不知道这有什么附加值,然后,对于您的方法findByEnabled,这也不是这个问题的重点,正如这个问题的标题中明确指出的:“在spring数据jpa中使用布尔属性进行查询而不使用方法参数”是的,我知道他要求的解决方案没有使用@Query,但是你提到跳过查询注释我只是想确保阅读你的答案的人注意到结果,如果你有一个实体有许多字段或/和占用大量内存的字段(例如大字符串),那么查询方法可能是危险的。所以不,你不能就这样跳过