我对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 );
这引发:
引起: org.springframework.data.mapping.PropertyReferenceException:没有 属性find找到类型ObjectHistory!在 org.springframework.data.mapping.PropertyPath。(PropertyPath.java:75) 在 org.springframework.data.mapping.PropertyPath.create(PropertyPath.java:327) 在 org.springframework.data.mapping.PropertyPath.create(PropertyPath.java:307) 在 org.springframework.data.mapping.PropertyPath.from(PropertyPath.java:270) 在 org.springframework.data.mapping.PropertyPath.from(PropertyPath.java:241) 在 org.springframework.data.repository.query.parser.Part。(Part.java:76)
答案 0 :(得分:3)
添加空的过滤条件将为您提供帮助:
@Query(value = "{}", fields = "{'objectContentAsJson':0}")
Page<ObjectHistory> findAll(Pageable pageable);
显然,当您未指定value
参数来过滤结果时,Spring Data会尝试从方法名称派生查询,并以某种方式,无法识别findAll
的特殊含义。
答案 1 :(得分:2)
由于您没有为@Query注释提供值字段,因此Spring会尝试将方法名 findAll 转换为不尊重查询创建的查询Spring的规格。 请查看规范here。
这应该适合你:
@Query(value = "{}", fields = "{'objectContentAsJson':0}")
Page<ObjectHistory> findAll(Pageable pageable);