Я делаю проект, в котором внешний интерфейс разрабатывается с 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.
Я понятия не имею, как отлаживать эту проблему. Это очень странно для меня. Пожалуйста, сообщите.