Ich versuche, eine N1QL-basierte Abfrage auf Spring Data Couchbase zu machen. Die Dokumentation sagtSpring Daten Couchbase # n1ql.fields Abfrage
#n1ql.fields will be replaced by the list of fields (eg. for a SELECT clause) necessary to reconstruct the entity.
Mein Repository Implementierung ist diese:
@Query("#{#n1ql.fields} WHERE #{#n1ql.filter}")
List<User> findAllByFields(String fields);
Und ich rufe diese Abfrage wie folgt:
this.userRepository.findAllByFields("SELECT firstName FROM default");
ich diesen Fehler:
Caused by: org.springframework.data.couchbase.core.CouchbaseQueryExecutionException: Unable to execute query due to the following n1ql errors: {"msg":"syntax error - at AS","code":3000}
Nach ein wenig von Forschung, ich habe versucht auch:
@Query("SELECT #{#n1ql.fields} FROM #{#n1ql.bucket} WHERE #{#n1ql.filter}")
Mit dieser Abfrage erhalte ich keinen Fehler, erhalte ich alle Dokumente gespeichert, sondern nur die ID die anderen Felder werden auf Null gesetzt, wenn meine Frage zu bekommen versucht, das firstName-Feld
this.userRepository.findAllByFields("firstName");
Wer weiß, wie man so eine Abfrage macht?
Vielen Dank im Voraus.
Die Dokumentation, die Sie gepostet haben, hat mir sehr geholfen. Schließlich habe ich verstanden, dass Spring Data dies nicht unterstützt und die einzige Möglichkeit darin besteht, Projektionen zu verwenden. Vielen Dank. – Elena