IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Hibernate Java Discussion :

Erreur "No Dialect mapping for JDBC type: -8" [Core]


Sujet :

Hibernate Java

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 78
    Points : 45
    Points
    45
    Par défaut Erreur "No Dialect mapping for JDBC type: -8"
    Bonjour tout le monde,

    Voilà, je travaille avec le "couple " Hibernate/Oracle.

    J'aimerais récupérer l'identifiant de la ligne via une requête SQL que voici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    String request = "select rowid, "+ tb.sourceColumnName + " from " + tb.sourceTableName + " where " + tb.sourceColumnName + " like '|@!%|'";
    Iterator iter = sessionAct.createSQLQuery(request).list().iterator();
    etc...
    Et voici mon message d'erreur :

    org.hibernate.MappingException: No Dialect mapping for JDBC type: -8


    Il faut savoir que :
    - je ne précise pas ni le nom de la table ni celui des zones en dur car il sont susceptibles de changer à tout moment. Donc c'est une requête SQL normalement classique...

    - qu'avec le mot clé "rownum", ça marche mais ça ne correspond pas à ce que je veux.

    Je n'arrive pas à trouver d'infos le type "-8" de l'erreur.

    Pouvez m'aider

    Merci d'avance

  2. #2
    Membre actif
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2006
    Messages
    288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 288
    Points : 261
    Points
    261
    Par défaut
    As tu activé les logs hibernate ? Si non actives les ! et donnes-nous les logs. Pour activer les logs hibernate , voici un exemple de configuration avec log4j :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    # Hibernate logging options (INFO only shows startup messages)
    log4j.logger.org.hibernate=DEBUG
     
    # Log JDBC bind parameter runtime arguments
    log4j.logger.org.hibernate.type=ALL

  3. #3
    Membre chevronné Avatar de jeffray03
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2008
    Messages
    1 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 501
    Points : 2 120
    Points
    2 120
    Par défaut
    peux-tu afficher le contenu de :
    et voir si tu as fait un mapping avec cette Table?

    Merci.

  4. #4
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 804
    Points
    48 804
    Par défaut
    Tu as précisé quel dialect dans ta config hibernate? Il semble que ton driver retourne un type particulier pour le rowid, type ue Hibernate est incapable de transformer en un objet pouvant rentrer dans ta liste.

  5. #5
    Membre du Club
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 78
    Points : 45
    Points
    45
    Par défaut
    Alors voici les réponses à vos questions :

    entre temps j'ai modifié mon code de façon à simplifier la requête (bref, j'ai mis les noms en dur)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     Session sessionAct	= sessionFactoryAct.openSession();
    			  sessionAct.beginTransaction();
    			  // String request = "select ROWID, "+ tb.sourceColumnName + " from " + tb.sourceTableName + " where " + tb.sourceColumnName + " like '|@!%|'";
    			  String request = "select rowid from FEED_ASA_ADDR" ;
    			  Iterator iter = sessionAct.createSQLQuery(request).list().iterator();
    j'ai toujours le même message d'erreur en mettant rowid :
    "org.hibernate.MappingException: No Dialect mapping for JDBC type: -8"

    ça marche toujours avec rownum.


    Pracede2005, j'ai activé les logs hibernate via ton code mais je n'ai pas plus d'infos (euh...après peut être que j'ai raté une étape, ça ne m'étonnerait pas de moi...)


    En ce qui concerne la config, c'est un peu particulier, voici comment ça s'articule :


    Tout part d'une route Camel dont voici un extrait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    public static void main(String[] args) throws Exception {
    		Main main = new Main();
    		main.setApplicationContextUri("META-INF/csd/spring/actimize_context.xml");
    		main.enableHangupSupport();
    		main.start();
    		Thread.currentThread().join(1000);
    	}
    	
        /**
         * Actimize Camel routing rules 
         */
    	@Override
        public void configure() {
    ...
    }
    La config s'appuie donc sur un fichier de config (actimize_context.xml) dont voici un extrait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     <!--  included contexts -->
      <import resource="../dao/context_persistance_${csd.env}.xml"/>
      <import resource="../jms/context_jms_payment_ct6_${csd.env}.xml"/> 
      <!--  import resource="../camel/context_camel_${csd.env}.xml"/ -->  
      <!-- import resource="../context_perf_${csd.env}.xml"/ -->
       
      <bean id="actimizeRoute" class="com.barclays.avaloq.csd.routes.ActimizeRoute"/>
      
      <camelContext id="actimize-camel-context" xmlns="http://camel.apache.org/schema/spring" depends-on="brokerAvq">
    		<routeBuilder ref="actimizeRoute"/>
      </camelContext>
    le fichier dont le nom est en gras configure la partie hibernate, extrait :
    context_persistance_${csd.env}.xml :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    <bean id="hibernateActSessionFactory"
    		class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
    		<!-- <property name="dataSource" ref="dataSource" /> -->
    		<property name="hibernateProperties">
    			<props>
    				<prop key="hibernate.connection.driver_class">oracle.jdbc.OracleDriver</prop>
    				<prop key="hibernate.connection.url">jdbc:oracle:thin:@customerv9:1521:xe</prop>
    				<prop key="hibernate.connection.username">Actimize</prop>
    				<prop key="hibernate.connection.password">tulavu</prop>
    				<prop key="hibernate.dialect">org.hibernate.dialect.OracleDialect</prop>
    				<prop key="hibernate.default_schema">ACTIMIZE</prop>
    				<prop key="hibernate.current_session_context_class">thread</prop>
    				<prop key="hibernate.connection.pool_size">2</prop>
    			</props>
    		</property>
    		<property name="annotatedClasses">
    			<list>
    				<!-- vide car je n'utilise pas de bean généré par hibernate -->
    			</list>
    		</property>
    	</bean>

    Voilà,

  6. #6
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 804
    Points
    48 804
    Par défaut
    d'après ce que je vois sur les forums hibernate, le type java.sql.RowId n'est pas supporté par hibernate. Une solution serait peut être, si c'est acceptable pour toi, de faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String request = "select ROWIDTOCHAR(ROWID), "+ tb.sourceColumnName + " from " + tb.sourceTableName + " where " + tb.sourceColumnName + " like '|@!%|'";
    L'autre option, c'est d'oublier le SQLQuery et d'obtenir directement la connexion JDBC brute via

    mais comme c'est déprécié dans hibernate 3 et n'existe plus dans hibernate 4

  7. #7
    Membre du Club
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 78
    Points : 45
    Points
    45
    Par défaut
    Super !!!!

    Bien joué tchize_ !!!!

    j'ai essayé avec ROWIDTOCHAR(ROWID)

    et ça marche très bien !!!

    Un grand merci à vous tous

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 5
    Dernier message: 20/05/2012, 12h49
  2. Erreur "the method is undefined for the type"
    Par youness78 dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 13/10/2009, 13h56
  3. Réponses: 4
    Dernier message: 02/06/2008, 13h14
  4. [HIBERNATE] No Dialect mapping for JDBC type: 3
    Par PamelaGeek dans le forum Hibernate
    Réponses: 2
    Dernier message: 10/10/2007, 15h14
  5. No Dialect mapping for JDBC type: -1
    Par breezer911 dans le forum Hibernate
    Réponses: 3
    Dernier message: 21/08/2007, 21h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo