Il s'avère que cette exception est due à un bogue dans Hibernate. Un de mes coéquipiers a trouvé un rapport de bogue connexe, Le réassemblage d'une entité à partir d'un cluster JBoss Cache peut échouer avec une "incompatibilité de type d'argument" , qui se produit lors de l'utilisation d'Hibernate et de JBoss Cache.
Selon le rapport, la définition de la propriété Hibernate hibernate.cache.use_structured_entries
à vrai évite l'exception. Selon la documentation d'Hibernate, cette propriété "oblige Hibernate à stocker les données dans le cache de second niveau dans un format plus convivial". Apparemment, les entrées de cache structuré garantissent également qu'Hibernate mappe correctement les propriétés d'un objet dans le cache de second niveau à la propriété correspondante dans une entité.
Javalobby a un article intéressant qui explique comment Hibernate utilise le cache de second niveau.
Les versions d'Hibernate postérieures à la 3.3.2GA présentent-elles également ce comportement ?