Пользовательский запрос N1QL с Couchbase и Spring Boot - PullRequest
0 голосов
/ 05 сентября 2018

Я написал собственный репозиторий для получения результатов, используя N1QL couchbase. Вот мой код,

    @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?

Любая помощь?

1 Ответ

0 голосов
/ 10 сентября 2018
// 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`
...