2015-08-18 140 views
0

我在MyBatis中使用帶有Oracle ojdbc6驅動程序的後端Oracle 11g R2的插入語句。MyBatis ORA-01745:無效主機/綁定變量名稱

我反覆得到

java.sql.SQLSyntaxErrorException: ORA-01745: invalid host/bind variable name

但是我不明白是什麼原因造成的問題,我沒有使用任何Oracle保留關鍵字。

<insert id="createRecord" parameterType="org.appliication.core.domain.TRRecord" 
      statementType="PREPARED" useGeneratedKeys="true" keyColumn="ID" keyProperty="id"> 

     INSERT INTO T_TR_PUBLICATION p (
      p.TR_UID, 
      p.TITLE, 
      p.ITEM_TITLE, 
      p.COVER_DATE, 
      p.HAS_ABSTRACT, 
      p.ISSUE, 
      p.SORT_DATE, 
      p.VOLUME, 
      p.BEGIN_PAGE, 
      p.END_PAGE, 
      p.ACCESSION_NO, 
      p.ISSN, 
      p.DOI, 
      p.FUNDING_TEXT 
     ) 
     VALUES (
      #{trUid, jdbcType=NULL}, 
      #{title, jdbcType=NULL}, 
      #{titleItem, jdbcType=NULL}, 
      #{coverDate, jdbcType=NULL}, 
      #{hasAbstract, jdbcType=NULL}, 
      #{issue, jdbcType=NULL}, 
      #{sortDate, jdbcType=NULL} 
      #{journalVolume, jdbcType=NULL}, 
      #{pageBegin, jdbcType=NULL}, 
      #{pageEnd, jdbcType=NULL}, 
      #{accessionNo, jdbcType=NULL}, 
      #{issn, jdbcType=NULL}, 
      #{doi, jdbcType=NULL}, 
      #{fundingText, jdbcType=NULL} 
     ) 

    </insert> 
+0

不知道MyBatis,但嘗試刪除'jdbcType = NULL',因爲'NULL'不是有效的JDBC類型。您不能將值綁定到NULL類型。 – Andreas

+0

是這個'org.appliication.core.domain.TRRecord'包/類的路徑是否正確? – itwasntme

+0

@Andreas,如果沒有jdbcType = NULL,MyBatis將無法工作,因爲如果像String這樣的對象爲null,它將映射到Oracle JDBC驅動程序無法理解的JdbcType.OTHER,因此會引發異常:UncategorizedSQLException:參數8設置爲null的錯誤與JdbcType OTHER。嘗試爲此參數或不同的jdbcTypeForNull配置屬性設置不同的JdbcType。原因:java.sql.SQLException:列類型無效 – greyfox

回答

1

指定您想要的實際類型,例如, VARCHAR。這樣,值(​​)和null都將映射到JDBC驅動程序可以理解的類型。

相關問題