2010-05-15 3 views
4

Dans mon application grails, je souhaite afficher toutes les entrées actuelles du cache de second niveau de toutes les régions.Comment obtenir des entrées à partir du cache de requête de second niveau?

Mon code est le suivant:

Cependant tout fonctionne bien tant que le nom de la région n'est pasorg.hibernate.cache.StandardQueryCache (région utilisée pour Query Cache). Dans ce cas, une exception est levée:

java.lang.ClassCastException: org.hibernate.cache.QueryKey cannot be cast to org.hibernate.cache.CacheKey 

Ayant googler autour, je ne trouve aucune indication sur comment afficher la liste des entrées du résultat de la requête en cache définit associée à des régions StandardQueryCache et UpdateTimestampsCache.

Pourriez-vous s'il vous plaît m'aider à trouver une solution pour cela?

+0

Avez-vous essayé d'utiliser la dernière version d'Hibernate? Il existe un correctif pour un problème qui semble très similaire - http://opensource.atlassian.com/projects/hibernate/browse/HHH-2021, dans la version 3.2.7/3.3.0 – mdma

+0

Oui. Je suis avec la version 3.3.2. – fabien7474

Répondre

3

C'est assez compliqué mais ça devrait aller plus loin. Vous pouvez accéder au cache de requêtes via le SessionFactory, donc en supposant que vous avez accès à ce (par exemple via « def sessionFactory »), alors vous pouvez obtenir les caches sous-jacentes comme ceci:

def cache = sessionFactory.queryCache 
def realCache = [email protected] 
def keys = realCache.keys 
for (key in keys) { 
    def value = realCache.get(key).value 
    // do something with the value 
} 

Notez que les valeurs seront un Liste des valeurs longues. Je ne suis pas sûr de ce que le premier signifie (c'est une grande valeur, par exemple 5219682970079232), mais le reste sont les ID des instances de classe de domaine mises en cache.

+0

Thx Burt à nouveau !! Tu es un génie. – fabien7474

+0

@BurtBeckwith Y at-il une telle solution de contournement dans Java? J'ai essayé 'sessionFactory.queryCache' mais cela n'a pas fonctionné. –

Questions connexes