SqlMapClient操作;错误的SQL语法:找不到表

时间:2015-08-11 10:07:39

标签: ibatis ibator

我正在使用Ibator生成Ibatis的东西,所以所有的工件都是自动生成的。我正在尝试做一个简单的插入,它提供异常"表未找到"虽然桌子已经存在"我可以从控制台查询。

这是错误

org.springframework.jdbc.BadSqlGrammarException: SqlMapClient operation; bad SQL grammar []; nested exception is com.ibatis.common.jdbc.exception.NestedSQLException:   

--- com / sqlmaps / MY_TABLE_NAME_SqlMap.xml中发生错误 ---应用参数图时发生错误 ---检查## MY_TABLE_NAME.insert-InlineParameterMap ---检查声明(更新失败) ---原因:java.sql.SQLException:SQL Anywhere错误-141:表' #MY_TABLE_NAME'找不到

SQL MAP文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-2.dtd">
<sqlMap namespace="##MY_TABLE_NAME">
  <insert id="insert" parameterClass="com.model.MyTable">
    <!--
      WARNING - @ibatorgenerated
      This element is automatically generated by Apache iBATIS Ibator, do not modify.
      This element was generated on Mon Jul 06 19:54:34 IST 2015.
    -->
    insert into ##MY_TABLE_NAME (field1, field2, field3, field4)
    values (#field1:tinyint#, #field2:DATE#, #field3:INT#, #field4:BIGINT#)
  </insert>
 </sqlMap>

在Ibator配置中我定义了表属性

<property name="runtimeTableName" value="##MY_TABLE_NAME" />

1 个答案:

答案 0 :(得分:0)

我将以下代码添加到log4j.xml以检查它生成的查询

<logger name="java.sql" additivity="false">
<level value="debug" />
<appender-ref ref="CONSOLE" />

我发现它生成了错误的表名,它是用#symbol为表名添加前缀,这在ibatorConfig.xml中是错误的