4 votes

Pas de mapping pour LONGVARCHAR dans Hibernate 3.2

J'utilise Hibernate 3.2.0 avec MySQL 5.1. Après avoir mis à jour le group_concat_max_len dans MySQL (à cause d'une requête group_concat qui dépassait la valeur par défaut), j'ai obtenu l'exception suivante lors de l'exécution d'une requête SQLQuery avec une clause group_concat :

"Aucun mappage de dialecte pour le type JDBC : -1"

-1 est la valeur de java.sql.Types pour LONGVARCHAR. Manifestement, l'augmentation de la valeur group_concat_max_len fait que les appels à group_concat renvoient une valeur LONGVARCHAR. Il semble qu'il s'agisse d'un cas de ce bogue :

http://opensource.atlassian.com/projects/hibernate/browse/HHH-3892

Je suppose qu'il existe un correctif pour ce problème dans Hibernate 3.5, mais il s'agit encore d'une version de développement, donc j'hésite à la mettre en production, et je ne sais pas si elle causerait des problèmes pour d'autres parties de ma base de code. Je pourrais également utiliser des requêtes JDBC, mais je devrais alors remplacer chaque instance de SQLQuery par une clause group_concat.

D'autres suggestions ?

3voto

Pascal Thivent Points 295221

Oui, deux suggestions. L'une ou l'autre :

  1. Patch Hibernate 3.2.0 avec les changements de HHH-3892 c'est-à-dire obtenir les sources d'Hibernate, appliquer les correctifs de r16501 , r16823 y r17332 ) et bui

  2. O H :

    public class MySQL5Dialect extends org.hibernate.dialect.MySQL5Dialect {
        public MySQL5Dialect() {
            super();
            // register additional hibernate types for default use in scalar sqlquery type auto detection
            // http://opensource.atlassian.com/projects/hibernate/browse/HHH-1483
            registerHibernateType(Types.LONGVARCHAR, Hibernate.TEXT.getName());
        }    
    }

O

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X