Comme indiqué déjà dans les commentaires, vous avez mauvaise compréhension de la NamedQuery. Pas le résultat est stocké dans le cache, mais la requête SQL est.
Néanmoins parfois EntityManager met en cache certaines choses et je suppose que vous avez besoin d'une solution pour cela ....
Si vous travaillez avec des objets de requête (par exemple EntityManager.createNamedQuery (« nameOfYourQuery »)) et EclipseLink vous peut effectuer les opérations suivantes:
Query query = EntityManager.createNamedQuery("nameOfYourQuery");
query.setHint(QueryHints.REFRESH, HintValues.TRUE);
query.getResultList();
Vous pouvez également des conseils requête de configuration directement dans le NamedQuery comme ceci:
@NamedQuery(name = "something", query = "SELECT n FROM something",
[email protected](name=QueryHints.REFRESH, value=HintValues.TRUE))
Une autre façon wi e conseils de requête serait celui-ci:
query.setHint(QueryHints.CACHE_USAGE, CacheUsage.DoNotCheckCache);
Pour une liste des indicateurs de requête possibles, jetez un oeil à the EclipseLink docs.
Si vous souhaitez désactiver complètement la base de données résultat que vous pouvez également mettre en cache les opérations suivantes dans votre persistence.xml
:
<property name="eclipselink.query-results-cache" value="false"/>
une requête nommée est une fois ETABLI (en SQL). Il doit toujours être exécuté à moins que vous n'ayez activé la mise en cache RESULTATS de la requête spécifique au fournisseur JPA. Mais vous ne définissez pas ce que vous avez activé – DN1
@ DN1 où puis-je trouver une telle configuration? Parce que je n'ai fait aucune configuration! –
Vous avez défini un EMF, vous avez donc effectué une "certaine" configuration. Vous avez un LOG pour voir ce que SQL est appelé. – DN1