diff --git a/src/test/java/org/springframework/data/couchbase/domain/Asset.java b/src/test/java/org/springframework/data/couchbase/domain/Asset.java new file mode 100644 index 000000000..e2f0bbf8f --- /dev/null +++ b/src/test/java/org/springframework/data/couchbase/domain/Asset.java @@ -0,0 +1,13 @@ +package org.springframework.data.couchbase.domain; + +import lombok.Data; +import org.springframework.data.couchbase.core.mapping.Field; + +@Data +public class Asset { + @Field + private String id; + @Field + private String desc; +} + diff --git a/src/test/java/org/springframework/data/couchbase/domain/User.java b/src/test/java/org/springframework/data/couchbase/domain/User.java index 5a841edb8..a82690a68 100644 --- a/src/test/java/org/springframework/data/couchbase/domain/User.java +++ b/src/test/java/org/springframework/data/couchbase/domain/User.java @@ -28,6 +28,7 @@ import org.springframework.data.annotation.TypeAlias; import org.springframework.data.annotation.Version; import org.springframework.data.couchbase.core.mapping.Document; +import org.springframework.data.couchbase.core.mapping.Field; /** * User entity for tests @@ -55,6 +56,9 @@ public User(final String id, final String firstname, final String lastname) { @LastModifiedBy protected String lastModifiedBy; @LastModifiedDate protected long lastModifiedDate; + @Field + protected Asset asset; + public String getLastname() { return lastname; } diff --git a/src/test/java/org/springframework/data/couchbase/domain/UserRepository.java b/src/test/java/org/springframework/data/couchbase/domain/UserRepository.java index 20fe84ee1..6a61d213b 100644 --- a/src/test/java/org/springframework/data/couchbase/domain/UserRepository.java +++ b/src/test/java/org/springframework/data/couchbase/domain/UserRepository.java @@ -63,6 +63,8 @@ public interface UserRepository extends CouchbaseRepository { List findByVersionEqualsAndFirstnameEquals(Long version, String firstname); + List findByAsset_IdAndAsset_Desc(String id, String desc); + @Query("#{#n1ql.selectEntity}|#{#n1ql.filter}|#{#n1ql.bucket}|#{#n1ql.scope}|#{#n1ql.collection}") @Scope("thisScope") @Collection("thisCollection") diff --git a/src/test/java/org/springframework/data/couchbase/repository/query/N1qlQueryCreatorTests.java b/src/test/java/org/springframework/data/couchbase/repository/query/N1qlQueryCreatorTests.java index dd980ed01..3d217c42d 100644 --- a/src/test/java/org/springframework/data/couchbase/repository/query/N1qlQueryCreatorTests.java +++ b/src/test/java/org/springframework/data/couchbase/repository/query/N1qlQueryCreatorTests.java @@ -225,6 +225,40 @@ void createsQueryFindByVersionEqualsAndAndFirstname() throws Exception { query.export()); } + @Test + void findByAssetId() throws Exception { + String input = "findByAsset_IdAndAsset_Desc"; + PartTree tree = new PartTree(input, User.class); + Method method = UserRepository.class.getMethod(input, String.class, String.class); + QueryMethod queryMethod = new QueryMethod(method, new DefaultRepositoryMetadata(UserRepository.class), + new SpelAwareProxyProjectionFactory()); + N1qlQueryCreator creator = new N1qlQueryCreator(tree, + getAccessor(getParameters(method), "test", "Home in Brooklyn"), queryMethod, converter, bucketName); + Query query = creator.createQuery(); + //We expect query to be + //WHERE `asset`.`id` = "test" and `asset`.`desc` = "Home in Brooklyn" + //But it was generated on version 4.2.11 + //WHERE META(bucketName).`id` = "test" and `asset`.`desc` = "Home in Brooklyn" + assertEquals(query.export(), " WHERE " + where(x("`asset`.`id`")).is("test") + .and("`asset`.`desc`").is("Home in Brooklyn").export()); + + //version 4.2.11 + /* + String input = "findByAsset_IdAndAsset_Desc"; + PartTree tree = new PartTree(input, User.class); + Method method = UserRepository.class.getMethod(input, String.class, String.class); + N1qlQueryCreator creator = new N1qlQueryCreator(tree, + getAccessor(getParameters(method), "test", "Home in Brooklyn"), null, converter, bucketName); + Query query = creator.createQuery(); + //We expect query to be + //WHERE `asset`.`id` = "test" and `asset`.`desc` = "Home in Brooklyn" + //But it was generated on version 4.2.11 + //WHERE META(bucketName).`id` = "test" and `asset`.`desc` = "Home in Brooklyn" + assertEquals(query.export(), " WHERE " + where(x("META(`" + bucketName + "`).`id`")).is("test") + .and("`asset`.`desc`").is("Home in Brooklyn").export()); + */ + } + private ParameterAccessor getAccessor(Parameters params, Object... values) { return new ParametersParameterAccessor(params, values); }