本文介绍了MyBatis ORA-01745:无效的主机/绑定变量名称的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我在MyBatis中有一个插入语句,在后端使用Oracle 11g R2和Oracle ojdbc6驱动程序.
I have an insert statement in MyBatis using Oracle 11g R2 on the backend with the Oracle ojdbc6 driver.
我反复得到
java.sql.SQLSyntaxErrorException: ORA-01745: invalid host/bind variable name
但是,我看不出是什么原因引起的,我没有使用任何Oracle保留的关键字.
However I don't see what is causing the issue, I'm not using any Oracle reserved Keywords.
<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>
推荐答案
指定所需的实际类型,例如VARCHAR
.这样,值("abc"
)和null
都将映射到JDBC驱动程序可以理解的类型.
Specify the actual type you want, e.g. VARCHAR
. This way, both a value ("abc"
) and a null
will map to a type the JDBC driver can understand.
这篇关于MyBatis ORA-01745:无效的主机/绑定变量名称的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!