私の状況は、次の3つの方法が与えられた場合です(Scalaでcouchbase-java-client 2.2を使用しました。Couchbaseサーバーのバージョンは4.1です):
def findAll() = {
bucket.query(N1qlQuery.simple(select("*").from(i(DatabaseBucket.USER))))
.allRows().toList
}
def findById(id: UUID) = {
Option(bucket.get(id.toString, classOf[RawJsonDocument])).map(i => read[User](i.content()))
}
def upsert(i: User) = {
bucket.async().upsert(RawJsonDocument.create(i.id.toString, write(i)))
}
基本的には、挿入、id による検索、および findAll です。私は実験をしました:
を挿入し、その直後に
User
1 つを見つけて、正しく挿入したユーザーを取得しました。findById
挿入して
findAll
その直後に使用すると、空が返されます。挿入して 3 秒の遅延を入れてから を使用すると
findAll
、挿入したものを見つけることができます。
そのため、N1qlQuery は「永続化」レイヤーではなく、キャッシュされたレイヤーのみを検索していると思われます。では、「持続」レイヤーで検索させるにはどうすればよいですか?