Я добавил новое булево поле (myFlag
) в существующий класс (MyClass
).Конфигурация кэша отдельных классов Eclipselink
На стороне JSP я добавил следующий код (myClassObject
был передан как атрибут запроса).
<span onclick="toggleMyFlag()">
<c:choose>
<c:when test="${myClassObject.myFlag}">
<c:out value="TRUE" />
</c:when>
<c:otherwise>
<c:out value="FALSE" />
</c:otherwise>
</c:choose>
</span>
Когда span
нажата, то флаг на предприятии успешно переключен (я могу просмотреть изменения в базе данных, и т.д.).
Однако, когда страница перезагружает выходы TRUE или FALSE, они не обновлены правильно (они остаются неизменными). Обновление страницы не работает. Выход из системы и обратно - нет. И закрытие браузера не делает. Единственный способ, по-видимому, исправить себя, - это перезапустить локальный сервер.
Я пробовал следующее без везения.
response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate");
response.setHeader("Pragma", "no-cache");
response.setDateHeader("Expires", 0);
Я также пробовал следующее по моему запросу, снова без везения.
query.setHint(QueryHints.REFRESH, HintValues.TRUE);
Тогда я обнаружил, что если я изменил следующее свойство (в persistence.xml
) ложными, функциональность работала.
<property name="eclipselink.cache.shared.default" value="true"/>
Однако я не хочу отключать все кэширование.
Я ничего не знаю о EclipseLink, поэтому мне было интересно, можно ли отключить кеширование всего лишь MyClass
.
'@Cache (false)' и '@Cache (isol = ISOLATED)' оба не компилируются. Похоже, мы используем EclipseLink 2.1.3. Запрос подсказки печально не сработал. –
Я просто попробовал '@Cache (alwaysRefresh = true)' (который скомпилировал) без везения. –
Что такое NameQuery с "CacheUsage.DoNotCheckCache"? Вы тоже это попробовали? –