Имеет ли javax.persistence.TypedQuery кеш? - PullRequest
0 голосов
/ 22 января 2020

Я делаю проект, в котором внешний интерфейс разрабатывается с angular и TypeScript, а внутренний - java.

Код внешнего интерфейса развертывается на веб-сервере, где веб сервер с балансировщиком нагрузки для случайного направления запроса от внешнего интерфейса к 2 приложениям.

У меня есть поток кода, как показано ниже: выберите значение из дБ, скажем, value1, отправьте запрос с value1 третьей стороне, сторонний возврат value2, обновите дБ с value2.

And I have following issue:
1. Click on UI (fire request from front end), request go to app1, proceed with code flow. Now suppose db got `value2`.
2. Login to db and check the value is updated with `value2` or not, yes, its updated.
3. click from UI again (fire request from front end), request go to app2, proceed with code flow, found that the selected value from db is still `value1`. ( Not understand why this happen).

Мой код выбора выглядит следующим образом:

TypedQuery<SystemSetup> query = createQuery(
                    "select o from SS o where o.key = :key")
                    .setParameter("key", key.getId());

return query.getSingleResult();

, где TypedQuery равно javax.persistence.TypedQuery;

Эта проблема возникает только при изменении запроса с 1 приложение к другому приложению. Если запрос хранится в том же приложении, он не будет иметь проблем.

Я думаю, что у него TypedQuery есть некоторые правила кэширования? Поэтому, когда оно указывает на другое приложение, оно получает значение из кэша, вместо go search from db.

Я понятия не имею, как отлаживать эту проблему. Это очень странно для меня. Пожалуйста, сообщите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...