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

Oracle Discussion :

Erreur avec le type ROWID


Sujet :

Oracle

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2014
    Messages : 4
    Points : 1
    Points
    1
    Par défaut Erreur avec le type ROWID
    Bonjour,

    Je suis actuellement en stage de développement Java et il faut que mon appli puisse manipuler une BDD Oracle à l'aide du framework MyBatis. Et comme j'ai jamais touché à ça avant, je suis en train d'apprendre à la dure

    La table que je dois remplir possède ces colonnes :
    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
    23
    24
    25
    26
    27
     
    CREATE TABLE TOTAL.T_OBSERVATION
    (
      IDOBSERVATION            NUMBER               NOT NULL,
      IDENGIN                  NUMBER,
      ID_MESSAGEBALISE         NUMBER,
      DATEOBSERVATION          DATE,
      X                        FLOAT(126),
      Y                        FLOAT(126),
      ECARTHORAIRE             FLOAT(126),
      ECARTTRAJECT             FLOAT(126),
      TYPE_OBSERVATION         NUMBER(3),
      FIABILITE                FLOAT(126),
      VITESSE                  FLOAT(126),
      CAP                      FLOAT(126),
      NOTRAINSUIVI             VARCHAR2(10 BYTE),
      NOTRAINCOMP              VARCHAR2(10 BYTE),
      ETATALIM                 NUMBER,
      USER_INTERRO             NUMBER,
      STATUT_TRAIN             NUMBER(1),
      STATUT_ECART_HORAIRE     NUMBER(1),
      STATUT_ECART_ITINERAIRE  NUMBER(1),
      STATUT_RECURRENCE        NUMBER(1),
      STATUT_DEPLACEMENT       NUMBER(1),
      STATUT_FIABILITE_NULLE   NUMBER(1),
      STATUT_SUSPENSION        NUMBER(1)
    )
    Ensuite je déclare en Java un objet qui possède un attribut pour chaque colonne :
    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
    23
    24
    public class Msg {
     public int IdObservation;
     public int IdEngin;
     public int IdMsgBalise;
     public String DateObs;
     public float X;
     public float Y;
     public float EcartHoraire;
     public float EcartTrajet;
     public int TypeObs;
     public float Fiabilite;
     public float Vitesse;
     public float Cap;
     public String NoTrainSuivi;
     public String NoTrainComp;
     public int EtatAlim;
     public int UserInterro;
     public int StatutTrain;
     public int StatutEcartHoraire;
     public int StatutEcartItineraire;
     public int StatutRecurrence;
     public int StatutDeplacement;
     public int StatutFiabiliteNulle;
     public int StatutSuspension;
    Et enfin je construis ma requète en récupérant les attributs de l'objet :
    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
    23
    24
    INSERT INTO T_OBSERVATION
        VALUES(SEQ_OBSERV.nextval, 
    			#{IdEngin},
    			#{IdMsgBalise},
    			TO_DATE('#{DateObs}','dd/mm/yyyy hh24:mi:ss'),
    			#{X},
    			#{Y},
    			#{EcartHoraire},
    			#{EcartTrajet},
    			#{TypeObs},
    			#{Fiabilite},
    			#{Vitesse},
    			#{Cap},
    			#{NoTrainSuivi},
    			#{NoTrainComp},
    			#{EtatAlim},
    			#{UserInterro},
    			#{StatutTrain},
    			#{StatutEcartHoraire},
    			#{StatutEcartItineraire},
    			#{StatutRecurrence},
    			#{StatutDeplacement},
    			#{StatutFiabiliteNulle},
    			#{StatutSuspension})
    Et enfin, Eclipse me sort cette erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java.sql.SQLSyntaxErrorException: ORA-00932: inconsistent datatypes: expected NUMBER got ROWID
    C'est là que j'ai besoin d'aide car après quelques recherches je ne comprends toujours pas ce qu'est un ROWID, ni comment j'ai pu en envoyer un à ma table

  2. #2
    McM
    McM est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Points : 7 740
    Points
    7 740
    Billets dans le blog
    4
    Par défaut
    Un ROWID est un code interne Oracle qui identifie une ligne dans une table (en gros équivalent interne de la PK).

    Exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT rowid idrow, a.* FROM dual a
     
    IDROW	DUMMY
    AAAAB0AABAAAAOhAAA	   X
    Ce rowid est généralement utilisé dans les IHM pour les updates/delete.


    Sinon pour ton erreur.. c'est bizarre. Voici 2 choses à faire.
    1/ Toujours mettre le nom des colonnes dans l'INSERT (en cas de modification de colonnes, changement de base, etc..)
    2/ Si ça marche pas, essaye en insérant le minimum pour voir si ça fonctionne, puis rajouter les autres variables.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO T_OBSERVATION(IDOBSERVATION) VALUES(SEQ_OBSERV.NEXTVAL)
    More Code : More Bugs. Less Code : Less Bugs
    Mon Blog PL/Sql : Fichier Zip / Image BMP / Lire sqliteDB / QRCode et Images PNG ou BMP

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2014
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Merci pour tes propositions, j'ai essayé déja de rajouter les noms des colonnes mais ça n'a rien changé.
    Ensuite j'ai essayé avec seulement la clé principale et j'ai une autre erreur toutefois semblable :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ### SQL: INSERT INTO T_OBSERVATION(IDOBSERVATION)           VALUES(SEQ_OBSERV.nextval)
    ### Cause: org.apache.ibatis.executor.ExecutorException: Error getting generated key or setting result to parameter object. Cause: java.sql.SQLException: Type de colonne non valide: getInt not implemented for class oracle.jdbc.driver.T4CRowidAccessor
    Pourtant quand j'essaye d'exécuter directement la même requête sans passer par Java ça passe sans souci.

  4. #4
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 766
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 766
    Points : 52 563
    Points
    52 563
    Billets dans le blog
    5
    Par défaut
    Ibatis est un ORM.... Je ne dirais jamais assez tout le mal que je pense des ORM, mais passons.
    Si vous aviez une clef primaire dans votre table, ceci n'irait-il pas mieux ?

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2014
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Pardon j'ai oublié de préciser que la clef primaire est IDOBSERVATION, c'est défini par une contrainte plus bas.
    Pour ce qui est de MyBatis, c'est la première fois que je m'en sers et c'est à la demande de mes supérieurs donc bon...

  6. #6
    Expert éminent sénior Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

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

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Points : 11 252
    Points
    11 252
    Par défaut
    Faite un test en insérant directement une valeur en dur ou via une variable sans utiliser la séquence. Est-ce que ça marche ?

  7. #7
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2014
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    J'ai essayé en mettant directement toutes les valeurs, j'ai la même erreur que quand je mettais seulement la clef primaire avec la sequence :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ### Error updating database.  Cause: org.apache.ibatis.executor.ExecutorException: Error getting generated key or setting result to parameter object. Cause: java.sql.SQLException: Type de colonne non valide: getInt not implemented for class oracle.jdbc.driver.T4CRowidAccessor

  8. #8
    Expert éminent sénior Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

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

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Points : 11 252
    Points
    11 252
    Par défaut
    Mon sentiment est que cela n'a rien à voir avec Oracle autrement dit vous est sur le mauvais forum. Lisez aussi "What causes an Invalid column type error with Oracle " pour iBatis DattaMapper.

    Je ne suis pas toujours d'accord avec SQLPRO mais j'adhère totalement à sa phrase
    Je ne dirais jamais assez tout le mal que je pense des ORM, mais passons

Discussions similaires

  1. Erreur avec Masterpage 'type non défini'
    Par Stephane_br dans le forum ASP.NET
    Réponses: 0
    Dernier message: 16/10/2013, 14h43
  2. erreur avec le type datetime !
    Par mia06 dans le forum Développement
    Réponses: 4
    Dernier message: 25/05/2011, 12h48
  3. [access 2003][Requete] Erreur : Incohérence avec le type d'expression
    Par Milyshyn76 dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 15/02/2008, 12h23
  4. [FireBird 2] Erreur avec le type TIME
    Par guence dans le forum SQL
    Réponses: 2
    Dernier message: 10/04/2007, 18h17
  5. Erreur sur inclusion types.h avec cygwin
    Par Bayard dans le forum Réseau
    Réponses: 12
    Dernier message: 12/11/2006, 16h48

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