Closed
Description
@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