Spring 数据 mongodb 存储库 findAll 字段排除
Spring data mongodb repository findAll field exclusion
我对 spring 数据 mongodb 存储库有一个奇怪的问题。我想从我的 findAll
请求中排除一个字段。我怎样才能做到这一点?
这非常有效:
@Query(fields = "{'objectContentAsJson':0}")
Page<ObjectHistory> findByObjectIdAndServiceIgnoreCase( String objectId, String service, Pageable pageable );
但是 findAll
没有机会:
@Query(fields = "{'objectContentAsJson':0}")
Page<ObjectHistory> findAll( Pageable pageable );
这抛出:
Caused by:
org.springframework.data.mapping.PropertyReferenceException: No
property findAll found for type ObjectHistory! at
org.springframework.data.mapping.PropertyPath.(PropertyPath.java:75)
at
org.springframework.data.mapping.PropertyPath.create(PropertyPath.java:327)
at
org.springframework.data.mapping.PropertyPath.create(PropertyPath.java:307)
at
org.springframework.data.mapping.PropertyPath.from(PropertyPath.java:270)
at
org.springframework.data.mapping.PropertyPath.from(PropertyPath.java:241)
at
org.springframework.data.repository.query.parser.Part.(Part.java:76)
添加一个空的过滤条件将为您解决问题:
@Query(value = "{}", fields = "{'objectContentAsJson':0}")
Page<ObjectHistory> findAll(Pageable pageable);
显然,当您不指定 value
参数来过滤结果时,Spring Data 会尝试从方法名称派生查询,但不知何故,无法识别 [= 的特殊含义12=].
由于您没有为您的@Query 注释提供 value 字段,Spring 将尝试转换方法名称 findAll 到不遵守 Spring 中的查询创建规范的查询。
请查看规格 here.
这应该适合你:
@Query(value = "{}", fields = "{'objectContentAsJson':0}")
Page<ObjectHistory> findAll(Pageable pageable);
我对 spring 数据 mongodb 存储库有一个奇怪的问题。我想从我的 findAll
请求中排除一个字段。我怎样才能做到这一点?
这非常有效:
@Query(fields = "{'objectContentAsJson':0}")
Page<ObjectHistory> findByObjectIdAndServiceIgnoreCase( String objectId, String service, Pageable pageable );
但是 findAll
没有机会:
@Query(fields = "{'objectContentAsJson':0}")
Page<ObjectHistory> findAll( Pageable pageable );
这抛出:
Caused by: org.springframework.data.mapping.PropertyReferenceException: No property findAll found for type ObjectHistory! at org.springframework.data.mapping.PropertyPath.(PropertyPath.java:75) at org.springframework.data.mapping.PropertyPath.create(PropertyPath.java:327) at org.springframework.data.mapping.PropertyPath.create(PropertyPath.java:307) at org.springframework.data.mapping.PropertyPath.from(PropertyPath.java:270) at org.springframework.data.mapping.PropertyPath.from(PropertyPath.java:241) at org.springframework.data.repository.query.parser.Part.(Part.java:76)
添加一个空的过滤条件将为您解决问题:
@Query(value = "{}", fields = "{'objectContentAsJson':0}")
Page<ObjectHistory> findAll(Pageable pageable);
显然,当您不指定 value
参数来过滤结果时,Spring Data 会尝试从方法名称派生查询,但不知何故,无法识别 [= 的特殊含义12=].
由于您没有为您的@Query 注释提供 value 字段,Spring 将尝试转换方法名称 findAll 到不遵守 Spring 中的查询创建规范的查询。 请查看规格 here.
这应该适合你:
@Query(value = "{}", fields = "{'objectContentAsJson':0}")
Page<ObjectHistory> findAll(Pageable pageable);