Моя ситуация такова, что, учитывая 3 следующие методы (я использовал couchbase-Java-клиент 2.2 в Scala и версии сервера Couchbase является 4,1.):Как я могу убедиться, что мой запрос N1QL рассматривает последние изменения?
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)))
}
В основном, они вставки, найти один по идентификатору и найти все. Я сделал эксперимент, в котором:
Я вставить
User
, а затем найти один заfindById
сразу же после этого, я получил пользователь, который я вставил правильно.Вставьте, а затем я использую
findAll
сразу после этого, он возвращает пустой.Вставить, положить 3 секунды задержки, а затем использовать
findAll
, я могу найти тот, который я вставил.
Таким образом, я подозревал, что N1qlQuery выполняет поиск только по кешированному слою, а не по слою «persist». Итак, как я могу заставить его искать слой «persist»?
Может быть хорошо перефразировать название этого, поскольку вы заявляете это как факт, а не вопрос, а механика отличается. Предлагается: «Как я могу убедиться, что мой запрос N1QL рассматривает последние изменения?» –