当指定where子句时,将忽略来自可分页的Spring数据oData过滤器

时间:2015-09-25 07:00:14

标签: java odata spring-data spring-data-jpa

我的数据模型如下:

GetMethod(...)

我正在使用Spring数据,我的存储库OperationRepository扩展了PagingAndSortingRepository。为了检索所有操作,我使用带有pageable的findAll()方法(它也有过滤器信息)。我得到了正确的数据。

过滤以及限制9:

public class Operation {

   @Column(length = Defaults.MAX_NAME_LENGTH, nullable = false)
   private String name;

   @Column(length = Defaults.MAX_DESCRIPTION_LENGTH, nullable = true)
   private String description;


   @Column(name = "external_id", updatable = false, nullable = false, length = Defaults.MAX_BINDING_ID_LENGTH)
   private String externalId;

   @Column(name = "is_entitleable", nullable = false)
   private boolean entitleable = true;

   }

生成的查询

externalId eq 'Start' or externalId eq 'Resume' or externalId eq 'Play' or externalId eq 'DestroyPermanent' or externalId eq 'Decommission' or externalId eq 'SoftDestroy' or externalId eq 'harddestroy' or externalId eq 'archive' or externalId eq 'changelease'

我想定义一个查询来查找entitleable = true的所有元素。

select op0_.id as id2_17_, op0_.appears_after_id as appears20_17_, op0_.description as descript3_17_, op0_.is_entitleable as is_entit4_17_, op0_.external_id as external5_17_ from cat_resourceoperation op0_ where op0_.external_id='Start' or op0_.external_id='Resume' or op0_.external_id='Play' or op0_.external_id='DestroyPermanent' or op0_.external_id='Decommission' or op0_.external_id='SoftDestroy' or op0_.external_id='harddestroy' or op0_.external_id='archive' or op0_.external_id='changelease' limit $1","parameters: $1 = '9'

但是,在这种情况下,查询完全忽略了我的过滤器。生成的查询是 -

@Query("select o from operation o where o.entitleable = true) ")
Page<Operation> findAll(Pageable pageable);

我尝试将方法命名为findByEntitleable(boolean entitleable,Pageable pageable)。但这也行不通。

0 个答案:

没有答案