Java 使用Couchbase和Spring Boot的自定义N1QL查询
我编写了一个自定义存储库,使用couchbase的N1QL获得结果。 这是我的密码Java 使用Couchbase和Spring Boot的自定义N1QL查询,java,spring,spring-boot,couchbase,Java,Spring,Spring Boot,Couchbase,我编写了一个自定义存储库,使用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
@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;
}
@覆盖
公共列表findAll(国际年龄){
String statement=“select*from bucket\u name,其中_class='com.mine.test.model.Person'和age>”+age;
SimpleN1qlQuery query=N1qlQuery.simple(语句);
List List=couchbaseTemplate.findByN1QL(查询,Person.class);
退货清单;
}
但我的错误率越来越低
无法为N1QL到实体的映射检索足够的元数据,您是否选择了\u ID和\u 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`
导入com.couchbase.client.java.Bucket;
导入com.couchbase.client.java.Cluster;
导入com.couchbase.client.java.couchbase集群;
导入com.couchbase.client.java.document.json.JsonObject;
导入com.couchbase.client.java.query.N1qlQuery;
导入com.couchbase.client.java.query.N1qlQueryResult;
导入com.demo.model.User;
导入com.google.gson.gson;
导入java.util.ArrayList;
导入java.util.List;
Cluster Cluster=CouchbaseCluster.create(“127.0.0.1”);
cluster.authenticate(“testuser”,“123456”);
Bucket=cluster.openBucket(“jsabucket”);
bucket.bucketManager().createN1qlPrimaryIndex(真、假);
//插入记录
JsonObject authur=JsonObject.create()
.put(“姓名”、“杰克”)
.put(“电子邮件”)test@test.com")
.put(“interets”,JsonArray.from(“Reading”,“sweening”);
bucket.upsert(JsonDocument.create(“u:king_亚瑟王,authur))
//获取记录
列表=新的ArrayList();
N1qlQueryResult结果
=bucket.query(N1qlQuery.simple(“从jsabucket中选择*));
结果。forEach(行->{
JsonObject JsonObject=row.value();
objectdoc=jsonObject.get(“jsabucket”);
Gson Gson=新的Gson();
User User=gson.fromJson(doc.toString(),User.class);
System.out.println(用户);
});
//用户模型类
导入java.util.List;
公共类用户{
私有字符串名称;
私人字符串电子邮件;
私人上市权益;
公共用户(){
}
公共用户(字符串名称、字符串电子邮件、兴趣列表){
this.name=名称;
this.email=电子邮件;
这个。利益=利益;
}
公共字符串getName(){
返回名称;
}
公共void集合名(字符串名){
this.name=名称;
}
公共字符串getEmail(){
回复邮件;
}
公用电子邮件(字符串电子邮件){
this.email=电子邮件;
}
公众利益清单(){
归还利息;
}
公共利益(列出利益){
这个。利益=利益;
}
}`在这里输入代码`
我没有通过Java使用N1QL,所以我不能给你一个明确的答案,但是id和cas值可以从meta()函数中获得:选择bucket\u name.*,meta(bucket\u name)来自代码>可能会有帮助。建议使用什么方法通过java查询数据?