我正在使用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" />
答案 0 :(得分:0)
我将以下代码添加到log4j.xml以检查它生成的查询
<logger name="java.sql" additivity="false">
<level value="debug" />
<appender-ref ref="CONSOLE" />
我发现它生成了错误的表名,它是用#symbol为表名添加前缀,这在ibatorConfig.xml中是错误的