Java + Oracle,ROWID类型问题

时间:2014-10-06 09:07:58

标签: java sql oracle mybatis rowid

我尝试使用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

1 个答案:

答案 0 :(得分:0)

你能用吗

INSERT INTO TOTAL.T_OBSERVATION 

 instead of 
INSERT INTO T_OBSERVATION
Mapper.xml中的

请参阅以下链接以了解类似问题

https://community.oracle.com/thread/544427