elv*_*row 9 java spring-data-jpa
我想在存储库中使用方法findAll,但我希望它只返回具有特定值的实体.例如,我希望它只返回活动的实体= 1.有没有办法做到这一点?
现在我必须为我的所有存储库写这样的东西:
@Query("select p from Parameter p where p.active = 1")
public List<Parameter> findAll();
Run Code Online (Sandbox Code Playgroud)
我不必使用findOne方法,而是在所有存储库中编写它:
@Query("select p from Parameter p where p.active = 1 and p.id=?1")
public Parameter findById(Long id);
Run Code Online (Sandbox Code Playgroud)
有没有更好的方法将毯式过滤器应用于所有查询?
Fab*_*tti 16
如果您可以考虑从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,或者从方法名称派生查询.
因此,在您的情况下,如果要检索active = 1的所有实体,您可以编写如下内容:
public List<Parameter> findByActive(Integer active);
Run Code Online (Sandbox Code Playgroud)
您还可以通过以下方式组合方法名称:
public Parameter findByIdAndActive(Long id, Integer active);
Run Code Online (Sandbox Code Playgroud)
方法签名与要执行的查询之间的转换是自动的.
| 归档时间: |
|
| 查看次数: |
27969 次 |
| 最近记录: |