Spring Data JPA - repository find所有使用标志列的方法

2022-09-04 01:19:29

我想在存储库中使用findAll方法,但我希望它只返回具有特定值的实体。例如,我希望它只返回活动 = 1 的实体。有没有办法做到这一点?

现在我必须为我的所有存储库编写如下内容:

@Query("select p from Parameter p where p.active = 1")
public List<Parameter> findAll();

与其使用 findOne 方法,我必须在我的所有存储库中编写以下内容:

@Query("select p from Parameter p where p.active = 1 and p.id=?1")
public Parameter findById(Long id);

有没有更好的方法对所有查询应用一揽子筛选器?


答案 1

如果您可以考虑从 findAll 迁移到其他策略,请查看此处的文档 http://docs.spring.io/spring-data/jpa/docs/1.5.1.RELEASE/reference/html/jpa.repositories.html#jpa.sample-app.finders.strategies

JPA 模块支持将查询手动定义为 String,或者从方法名称派生查询。

因此,在你的情况下,如果你想检索所有活动= 1的实体,你可以写如下:

public List<Parameter> findByActive(Integer active);

您还可以通过以下方式编写方法名称:

public Parameter findByIdAndActive(Long id, Integer active);

方法签名与要执行的查询之间的转换是自动的。

编辑:如果您使用布尔值表示活动,您还可以使用如下方法:

public List<Parameter> findByActiveTrue();
//or
public List<Parameter> findByActiveFalse();



答案 2

推荐