2016-02-11 19 views
9

私は春のデータのmongodbのリポジトリに奇妙な問題があります。私はfindAllリクエストからフィールドを除外したいと思います。どうすればこれを達成できますか?春のデータ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:によって引き起こさ

を:いいえ プロパティfindAllがObje型に対して見つかりましたctHistory! でorg.springframework.data.mapping.PropertyPath。(PropertyPath.java:75) でorg.springframework.data.mapping.PropertyPath.create(PropertyPath.java:327) org.springframework.data.mappingで org.springframework.data.mapping.PropertyPath.from(PropertyPath.javaで.PropertyPath.create(PropertyPath.java:307) でorg.springframework.data.mapping.PropertyPath.from(PropertyPath.java:270) :241) でorg.springframework.data.repository.query.parser.Part(Part.java:76)追加

答えて

3

。空のフィルタ基準は、あなたのためのトリックを行います:

@Query(value = "{}", fields = "{'objectContentAsJson':0}") 
Page<ObjectHistory> findAll(Pageable pageable); 

をどうやら、あなたは結果をフィルタリングするvalueパラメータを指定しない場合は、春のデータは、メソッド名からクエリを導出しようと何とか、認識しません特別な意味はfindAllです。

+0

しかし、私はそれを得るいけない、それはとにかく他の関数での鉱山として助けを –

+0

おかげで動作します! –

+0

それ以外の場合、クエリはメソッド名から派生します。 –

2

あなたが@query注釈に場を提供していないので、春は春からクエリの作成仕様を尊重していないクエリにメソッド名のfindAllを変換しようとします。 スペックhereをご覧ください。

これはあなたのために働く必要があります。

@Query(value = "{}", fields = "{'objectContentAsJson':0}") 
Page<ObjectHistory> findAll(Pageable pageable); 
+0

それは有効な考えですが、それは 'JPA'ではなく' MongoDB'です。したがって、 'JPQL'を使うことはできません。 –

+0

実際には、Springは基礎となるデータストアに変換されます。 Spring Data Mongo Official Documentationの[この例](http://docs.spring.io/spring-data/mongodb/docs/current/reference/html/#repositories.query-streaming)を参照してください。 – omahjoub

+0

この文書の最初の部分は一般的であることを意味しましたが、デモンストレーションのための 'JPA'具体例を使用しました。 http://docs.spring.io/spring-data/mongodb/docs/current/reference/html/#referenceの後のすべてがmongo用です –

関連する問題