2016-02-11 7 views
9

Ich habe ein seltsames Problem für die Frühjahr Daten mongodb Repositories .. Ich möchte ein Feld von meinem findAll Anfrage ausschließen. Wie kann ich das erreichen?Frühling Daten mongodb Repository findAll Feld Ausschluss

Das funktioniert perfekt:

@Query(fields = "{'objectContentAsJson':0}") 
Page<ObjectHistory> findByObjectIdAndServiceIgnoreCase(String objectId, String service, Pageable pageable); 

Aber keine Chance für findAll:

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

Dies wirft:

Verursacht durch: org.springframework.data.mapping.PropertyReferenceException : No Immobilie gefundenAlle gefunden für Typ Obje ctGeschichte! bei org.springframework.data.mapping.PropertyPath. (PropertyPath.java:75) bei org.springframework.data.mapping.PropertyPath.create (PropertyPath.java:327) bei org.springframework.data.mapping .PropertyPath.create (PropertyPath.java:307) bei org.springframework.data.mapping.PropertyPath.from (PropertyPath.java:270) bei org.springframework.data.mapping.PropertyPath.from (PropertyPath.java : 241) bei org.springframework.data.repository.query.parser.Part (Part.java:76)

Antwort

3

hinzugefügt wird. ein leeres Filterkriterium wird den Trick für Sie tut:

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

Anscheinend, wenn Sie die Ergebnisse nicht die value Parameter angeben zu filtern, versucht Spring Data eine Abfrage aus dem Methodennamen abzuleiten und irgendwie nicht erkennt die besondere Bedeutung von findAll.

+0

Aber ich nicht, es bekommen, funktioniert es wie ich auf der anderen Funktion –

+0

Danke für die Hilfe sowieso! –

+0

Im anderen Fall ist die Abfrage vom Methodennamen ableitbar. –

2

Da Sie kein Wert Feld Ihre @Query Annotation bietet, Frühling wird versuchen, den Namen der Methode findAll auf eine Abfrage zu konvertieren, die nicht die Abfrageerstellung Spezifikation von Frühling zu respektieren. Bitte suchen Sie die Spezifikationen here.

Dies sollte für Sie arbeiten:

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

Das ist eine gute Idee, aber es ist 'MongoDB' nicht' JPA', also kann man 'JPQL' nicht verwenden. –

+0

Eigentlich können Sie, Spring wird in den zugrunde liegenden Datenspeicher konvertieren. Siehe [dieses Beispiel] (http://docs.spring.io/spring-data/mongodb/docs/current/reference/html/#repositories.query-streaming) aus der offiziellen Spring Data Mongo-Dokumentation. – omahjoub

+0

Der erste Teil dieses Dokuments sollte allgemein gehalten werden, verwendete jedoch 'JPA'-spezifische Beispiele für den Demonstrationszweck. Alles nach http://docs.spring.io/spring-data/mongodb/docs/current/reference/html/#reference ist für mongo –

Verwandte Themen