Hello
I'm trying to use MyBatis to manipulate an Oracle database with Java but i'm a complete beginner with Oracle...
Here's the Oracle tab:
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)
)
Then I create a java object which attributes correspond to the columns :
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;
And finally I build the sql query in my Mapper.xml file :
INSERT INTO TOTAL.T_OBSERVATION(IDOBSERVATION)
IDENGIN,
ID_MESSAGEBALISE,
DATEOBSERVATION,
X,
Y,
ECARTHORAIRE,
ECARTTRAJECT,
TYPE_OBSERVATION,
FIABILITE,
VITESSE,
CAP,
NOTRAINSUIVI,
NOTRAINCOMP,
ETATALIM,
USER_INTERRO,
STATUT_TRAIN,
STATUT_ECART_HORAIRE,
STATUT_ECART_ITINERAIRE,
STATUT_RECURRENCE,
STATUT_DEPLACEMENT,
STATUT_FIABILITE_NULLE,
STATUT_SUSPENSION)
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})
But the problem I have is that a ROWID object is returned somewhere instead of a number and I can't figure ouut why.
java.sql.SQLSyntaxErrorException: ORA-00932: inconsistent datatypes: expected NUMBER got ROWID
I also tried to build my query inserting only the primary key but then i have another error :
### SQL: INSERT INTO TOTAL.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
I'm stuck, can someone help me?