我的情况是,给定以下 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
,然后找到一个findById
,我得到了一个我正确插入的用户。我插入,然后我立即使用
findAll
,它返回空。我插入,延迟 3 秒,然后使用
findAll
,我可以找到我插入的那个。
由此,我怀疑 N1qlQuery 只搜索缓存层而不是“持久”层。那么,我怎样才能强制让它在“持久”层上搜索呢?