MyBatis ORA-01745:无效的主机/绑定变量名称

时间:2015-08-18 20:24:34

标签: java oracle mybatis spring-mybatis

我在MyBatis中使用带有Oracle ojdbc6驱动程序的Oracle 11g R2进行插入语句。

我一再得到

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>

1 个答案:

答案 0 :(得分:1)

指定所需的实际类型,例如VARCHAR。这样,值("abc")和null都将映射到JDBC驱动程序可以理解的类型。