繁体   English   中英

Java + Oracle,ROWID类型问题

[英]Java + Oracle, ROWID type issue

我正在尝试使用MyBatis从我的Java应用程序操作Oracle DB,但是我是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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM