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>
不知道MyBatis,但嘗試刪除'jdbcType = NULL',因爲'NULL'不是有效的JDBC類型。您不能將值綁定到NULL類型。 – Andreas
是這個'org.appliication.core.domain.TRRecord'包/類的路徑是否正確? – itwasntme
@Andreas,如果沒有jdbcType = NULL,MyBatis將無法工作,因爲如果像String這樣的對象爲null,它將映射到Oracle JDBC驅動程序無法理解的JdbcType.OTHER,因此會引發異常:UncategorizedSQLException:參數8設置爲null的錯誤與JdbcType OTHER。嘗試爲此參數或不同的jdbcTypeForNull配置屬性設置不同的JdbcType。原因:java.sql.SQLException:列類型無效 – greyfox