From 34425c54db053cf7f8889126204aef234b4e1657 Mon Sep 17 00:00:00 2001 From: Mark Paluch Date: Thu, 1 Aug 2019 14:09:02 +0200 Subject: [PATCH] DATAMONGO-2327 - Polishing. Add support for DBRef encoding. Update Javadoc. Original pull request: #774. --- .../support/QuerydslAbstractMongodbQuery.java | 23 ++++++++++++------- .../QuerydslRepositorySupportTests.java | 15 ++++++++---- 2 files changed, 26 insertions(+), 12 deletions(-) diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/support/QuerydslAbstractMongodbQuery.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/support/QuerydslAbstractMongodbQuery.java index 8a23f2f9d..6020077ae 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/support/QuerydslAbstractMongodbQuery.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/support/QuerydslAbstractMongodbQuery.java @@ -18,10 +18,13 @@ package org.springframework.data.mongodb.repository.support; import java.util.List; import org.bson.Document; +import org.bson.codecs.DocumentCodec; import org.bson.json.JsonMode; import org.bson.json.JsonWriterSettings; + import org.springframework.lang.Nullable; +import com.mongodb.MongoClientSettings; import com.querydsl.core.DefaultQueryMetadata; import com.querydsl.core.QueryModifiers; import com.querydsl.core.SimpleQuery; @@ -40,7 +43,7 @@ import com.querydsl.core.types.Predicate; * 2.0. *

* Modified for usage with {@link MongodbDocumentSerializer}. - * + * * @param concrete subtype * @author laimw * @author Mark Paluch @@ -184,7 +187,7 @@ public abstract class QuerydslAbstractMongodbQuery getQueryMixin() { @@ -216,6 +219,9 @@ public abstract class QuerydslAbstractMongodbQuery * + * Note that encoding to {@link String} may fail when using data types that cannot be encoded or DBRef's without an + * identifier. + * * @return never {@literal null}. */ @Override @@ -223,27 +229,28 @@ public abstract class QuerydslAbstractMongodbQuery query = repoSupport.from(p).where(p.lastname.eq("Matthews")); + User user = new User(); + user.setId("id"); + SpringDataMongodbQuery query = repoSupport.from(p) + .where(p.lastname.eq("Matthews").and(p.coworker.eq(user))); - assertThat(StringUtils.trimAllWhitespace(query.toString())).isEqualTo("find({\"lastname\":\"Matthews\"})"); + assertThat(StringUtils.trimAllWhitespace(query.toString())) + .isEqualTo("find({\"lastname\":\"Matthews\",\"coworker\":{\"$ref\":\"user\",\"$id\":\"id\"}})"); query = query.orderBy(p.firstname.asc()); assertThat(StringUtils.trimAllWhitespace(query.toString())) - .isEqualTo("find({\"lastname\":\"Matthews\"}).sort({\"firstname\":1})"); + .isEqualTo( + "find({\"lastname\":\"Matthews\",\"coworker\":{\"$ref\":\"user\",\"$id\":\"id\"}}).sort({\"firstname\":1})"); query = query.offset(1).limit(5); assertThat(StringUtils.trimAllWhitespace(query.toString())) - .isEqualTo("find({\"lastname\":\"Matthews\"}).sort({\"firstname\":1}).skip(1).limit(5)"); + .isEqualTo( + "find({\"lastname\":\"Matthews\",\"coworker\":{\"$ref\":\"user\",\"$id\":\"id\"}}).sort({\"firstname\":1}).skip(1).limit(5)"); } @Data