Quelqu'un peut-il m'aider à résoudre cette question. J'utilise Infinispan comme cache de second niveau et Hibernate comme ORM. J'ai activé à la fois enityt et le cache de requête.Query Cache Hibernate entités de chargement
J'ai deux requêtes, par exemple Q1 est "Selet b de BokkEntity b où b.id < 5" et un autre comme Q2 est "sélectionner b de BokkEntity b où b.id < 7"
La première fois que je Je cours Q1 il charge 5 objets du magasin persistant dans le cache. l'exécution de la deuxième requête la première fois charge 7 objets dans le cache. Alors que les cinq premiers objets sont communs dans les deux requêtes. Et selon ma compréhension de la requête, Cache cache toujours l'ID, et si le cache de l'entité est dans la recherche, il est fait dans le cache pour les objets, référencés par les ID, dans le cache de requête.
Alors ma question est pourquoi les deux Q2 se charge tous les objets encore et ceux-ci dans le cache d'écraser l'entité pendant que je cours Q2 (après q1 en cours d'exécution) première fois.
J'ai vérifié que le cache de requête fonctionne correctement pour toute demande ultérieure. Par exemple, si je réexécute Q1 ou Q2, les données sont accessibles à partir du cache.
C'est urgent, j'apprécierai l'effort.
Merci
Meena
En outre, cela semble être un bon article sur les pièges de l'utilisation de la mise en cache des requêtes: http://tech.puredanger.com/2009/07/10/hibernate-query-cache/ Citation de l'article: "La principale raison que le cache de requête n'est souvent pas utile, c'est que les résultats sont constamment invalidés par des modifications de table. " –