SDN(Neo4j) Функция закладок не работает для операций извлечения

После выполнения записи в Neo4j я пытаюсь прочитать ту же запись, используя идентификатор закладки, полученный в конце транзакции записи. Я использую SDN для запросов с использованием закладок. Я сделал следующие изменения для того же:

Настройка менеджера закладок

    @Configuration
    @EnableBookmarkManagement
    public class SampleConfig implements WebMvcConfigurer {

      @Bean
      public Neo4jTransactionManager transactionManager() {
        return new Neo4jTransactionManager(sessionFactory());
      }

      @Bean
      public BookmarkManager bookmarkManager() {
        return new CaffeineBookmarkManager();
      }
}

Доступ к закладке в транзакционном контексте

    @Service("xyzService")
    public class XYZServiceImpl implements XYZService {

       @Override
       @Transactional(readOnly = true)
       @UseBookmark
       @Retryable(exceptionExpression = RETRY_EXCEPTION_PATTERN, maxAttempts = 
       RETRY_MAX_ATTEMPTS, backoff = @Backoff(delay = 
       RETRY_BACKOFF_INITIAL_DELAY, multiplier = RETRY_BACKOFF_MULTIPLIER))
       public XYZ findById(String id) {
          return neo4jSession.query(XYZ.class, "some cypher query", new HashMap<>());
    }
}

Мое понимание здесь в соответствии с документацией по закладкам, которые я прошел ( https://neo4j.com/blog/spring-data-neo4j-5-0-release/):

  • SDN поддерживает Caffeine Cache, в котором хранятся все закладки для каждой транзакции.
  • Когда мы используем @UseBookmark, Spring получает доступ к закладке из кэша и устанавливает ее в транзакции READ.

Но, похоже, кеш очищается после каждой транзакции, и я не могу получить доступ к его значению, используя @UseBookmark когда я читаю. Может ли кто-нибудь дать представление о том, почему это происходит, и я делаю это правильно?

У меня есть еще один вопрос. Если в сеансе OGM установлена ​​закладка, означает ли это, что Neo4j будет использовать закладку при запросе данных? Поскольку я не получил никакой подсказки во время отладки или через журналы, которые говорят, что Neo4j использовал закладку, которую я предоставляю. Благодарю.

0 ответов

Другие вопросы по тегам