使用Couchbase和Spring Boot的自定义N1QL查询



我已经编写了一个自定义存储库,以使用couchbase的N1QL获得结果。 这是我的代码,

@Override
public List<Person> findAll(int age) {
String statement = "select * from bucket_name where _class = 'com.mine.test.model.Person' and age>"+age;
SimpleN1qlQuery query = N1qlQuery.simple(statement);
List<Person> list=couchbaseTemplate.findByN1QL(query, Person.class);
return list;
}

但是我得到以下错误,

无法检索足够的元数据进行 N1QL 到实体的映射,您是否选择了_ID和_CAS?

有什么帮助吗?

// below code snippet with imports
import com.couchbase.client.java.Bucket;
import com.couchbase.client.java.Cluster;
import com.couchbase.client.java.CouchbaseCluster;
import com.couchbase.client.java.document.json.JsonObject;
import com.couchbase.client.java.query.N1qlQuery;
import com.couchbase.client.java.query.N1qlQueryResult;
import com.demo.model.User;
import com.google.gson.Gson;
import java.util.ArrayList;
import java.util.List;
Cluster cluster = CouchbaseCluster.create("127.0.0.1");
cluster.authenticate("testuser","123456");
Bucket bucket = cluster.openBucket("jsabucket");
bucket.bucketManager().createN1qlPrimaryIndex(true, false);
// Inserting records
JsonObject authur = JsonObject.create()
.put("name","Jake")
.put("email","test@test.com")
.put("interets", JsonArray.from("Reading","Swimming"));
bucket.upsert(JsonDocument.create("u:king_arthur",authur))
//    fetching records
List list = new ArrayList<>();
N1qlQueryResult result
= bucket.query(N1qlQuery.simple("SELECT * FROM jsabucket"));
result.forEach(row -> {
JsonObject jsonObject = row.value();
Object doc = jsonObject.get("jsabucket");
Gson gson = new Gson();
User user = gson.fromJson(doc.toString(), User.class);
System.out.println(user);
});
// User model class
import java.util.List;
public class User {
private String name;
private String email;
private List<String> interests;
public User() {
}
public User(String name, String email, List<String> interests) {
this.name = name;
this.email = email;
this.interests = interests;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public List<String> getInterests() {
return interests;
}
public void setInterests(List<String> interests) {
this.interests = interests;
}
}`enter code here`

最新更新