Skip to content

N1QL Query transformation generates incorrect query in 4.2.11 #1628

Closed
@rt-jar

Description

@rt-jar
  @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);
	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
	//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());
}

Add this test in class N1qlQueryCreatorTests. Need a new class Asset as below:

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;
}

Add reference to this class in User.java

     @Field
protected Asset asset;

Query generation is wrong. This issue seems to be fixed in latest version of spring-data-couchbase. Same test is passing correctly.

Here is the pull request which will demonstrate actual issue.
#1629

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions