我正试图使用MyBatis从我的Java应用程序中操作Oracle数据库,但我完全是Oracle的初学者。。。
这是Oracle选项卡:
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)
)
然后我创建一个Java对象,其属性对应于表的列:
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;
最后,我在Mapper.xml文件中创建了SQL查询:
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})
但问题是,查询在某个地方返回了一个ROWID对象,我无法弄清楚它是什么以及它来自哪里。
java.sql.SQLSyntaxErrorException: ORA-00932: inconsistent datatypes: expected NUMBER got ROWID
你能使用吗
INSERT INTO TOTAL.T_OBSERVATION
instead of
INSERT INTO T_OBSERVATION
在Mapper.xml 中
有关类似问题的,请参阅下面的链接
https://community.oracle.com/thread/544427