ibatis 问题:Unable to translate SQLException with Error code '0', will now try the

问题描述

xml文件: <!-- 动态插入数据 --> <typeAlias alias="colInfo" type="com.starit.sqms.corpReport.model.ColInfo"/> <insert id="commonInsert" parameterClass="colInfo" > insert into $tableName$ <iterate property="colName" open="(" close=")" conjunction=",">#colName[]# </iterate> values <iterate property="colValue" open="(" close=")" conjunction=",">#colValue[]# </iterate> </insert>里面的colName和colValue都是List型的,都在ColInfo 类里。service:public void commonInsert(ColInfo colInfo) {System.out.println("------------------------------");System.out.println(colInfo.getColName().size());System.out.println(colInfo.getColValue().size());System.out.println("------------------------------");sqlMapClientTemplate.insert("commonInsert", colInfo);}可以确定有值输出。报错:引用

解决方案

抱歉, 刚才笔误, #应该包围[], 应该写成这样 colName#[]
解决方案二:
#要注意两个地方:1.Java代码中是否设置了属性值col.setColName(colName);col.setColValue(colValue);public class TestColDao extends BaseTestCase{ public TestColDao(String name) { super(name); } public void testColDao() { ColInfoDao dao=(ColInfoDao)ctx.getBean("colInfoDao"); ColInfo col = new ColInfo(); col.setTableName("TEST_COL"); List colName = new ArrayList(); colName.add("NAME"); colName.add("TYPE"); colName.add("ADDRESS"); List colValue = new ArrayList(); colValue.add("hello"); colValue.add("test"); colValue.add("beijing"); col.setColName(colName); col.setColValue(colValue); Object object = dao.doInsert(col); }}2.字段名要使用$$,字段值要使用##$$是直接用内容代替,##是当做字符串处理<?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="colinfo"><typeAlias alias="colInfo"type="com.travelsky.angel.model.ColInfo" /><insert id="commonInsert" parameterClass="colInfo" >insert into $tableName$<iterate property="colName" open="(" close=")" conjunction=",">$colName[]$</iterate> values<iterate property="colValue" open="(" close=")" conjunction=",">#colValue[]#</iterate></insert></sqlMap>
解决方案三:
SQLMAP 是否存在笔误?<typeAlias alias="colInfo" type="com.starit.sqms.corpReport.model.ColInfo"/> <insert id="commonInsert" parameterClass="colInfo" > insert into $tableName$ <iterate property="colName" open="(" close=")" conjunction=","> colName[]# ---> #colName[]# 少个#?</iterate> values <iterate property="colValue" open="(" close=")" conjunction=","> colValue[]# ---> #colValue[]# 少个#?</iterate> </insert> SQLMAP 没报错?
解决方案四:
你传进来的parameterClass是一个实体Bean,但是你取的时候是一个list,当然是报空值了,建议你可以在程序代码里面循环list去逐个插入到相应的数据库表就行。比如:for(ColInfo c:clist) { //插入数据库的操作saveColInfo();}然后在xml里面加入一个插入语句就行<insert id="commonInsert" parameterClass="colInfo" > insert into table(...) values(##, ##, ...)</insert>按照这种方式应该可以解决。

时间: 2024-12-02 10:04:21

ibatis 问题:Unable to translate SQLException with Error code &#039;0&#039;, will now try the的相关文章

MS SQL Could not obtain information about Windows NT group/user &amp;#39;domain\login&amp;#39;, error code 0x5. [SQLSTATE 42000] (Error 15404)

最近碰到一个有趣的错误:海外的一台数据库服务器上某些作业偶尔会报错,报错信息如下所示: ------------------------------------------------------------------------------------------------------------------------------------------------- 日期 2013/9/15 12:00:00 日志 作业历史记录 (JOB_SYNCHRONIZING_ESCM_DATA

ORA-00600: internal error code, arguments: [kcratr1_lastbwr], [], [], [], [], [], [], []

    今天在PlateSpin Forge(关于PlateSpin相关介绍,请见最下面部分简单介绍) 复制出来的一台数据库服务器上,测试数据库能否正常启动时,遇到了"ORA-00600: internal error code, arguments: [kcratr1_lastbwr], [], [], [], [], [], [], []"错误:   在官方文档介绍中,这个错误主要出现在磁盘出现故障导致数据库崩溃后,实例启动失败,并报ORA-00600: arguments: [k

MS SQL Could not obtain information about Windows NT group/user &#039;domain\login&#039;, error code 0x5. [SQLSTATE 42000] (Error 15404)

最近碰到一个有趣的错误:海外的一台数据库服务器上某些作业偶尔会报错,报错信息如下所示: ------------------------------------------------------------------------------------------------------------------------------------------------- 日期 2013/9/15 12:00:00 日志 作业历史记录 (JOB_SYNCHRONIZING_ESCM_DATA

Print2Flash出现&amp;quot;System Error. Code:1722. RPC服务器不可用.&amp;quot;错误解决办法

Print2Flash出现"System Error. Code:1722. RPC服务器不可用."错误. 一般来说这个应该是某个Windows服务没有打开所导致的问题.后来才发现:原来是Print Spooler这个服务没有启动,只要启动这个服务就可以了,启动的时候就不会报错了.

Win8系统安装过程中提示Error Code:0x0000005D错误的解决方法

  win8系统虽然在慢慢退出市场,不过还是有不少的用户喜欢Win8系统的风格,而在Win7升级win8系统的过程中会出现一些问题,有位用户遇到错误提示Error Code:0x0000005D的问题,该如何解决此问题呢?下面小编研究整理安装Win8系统提示Error Code:0x0000005D错误的解决方法. 错误信息如下: Your PC needs to restart. Please hold down the power button Error Code:0x0000005D P

mysql出现Error Code:1418 错误的解决办法

错误信息如下: 以下是引用片段:Error Code : 1418 This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled (you *might* want to use the less safe log_bin_trust_function_creators variable) (0 ms taken) 解决方法如下

如何设计一门编程语言(六) exception和error code

我一直以来对于exception的态度都是很明确的.首先exception是好的,否则就不会有绝大多数的语言都支持他了.其次,error code也没什么问题,只是需要一个前提--你的语言得跟Haskell一样有monad和comonad.你看Haskell就没有exception,大家也写的很开心.为什么呢?因为只要把返回带error code结果的函数给做成一个monad/comonad,那么就可以用CPS变换把它变成exception了.所以说CPS作为跟goto同样基本的控制流语句真是当

在FireFox中的Security error“code:”1000错误方法

今天在开发的时候出现"Security error" code: "1000 "的错误,有些莫名其妙,一来是因为这个错误描述还是第一次见到,二来因为我只是做了一个很简单的表单,里面也就四五个输入框和一个文件上传的控件. 看其意思,貌似是有关安全方面的错误,于是上网查了一下,原来,当尝试给type="file"的输入框赋值时,FireFox就会报这个错误,因为考虑到用户数据的安全,fileupload控件是设计成只读的,所以不能手动给它赋值,它里面

mysql的Error Code:1418 错误的解决办法

Error Code : 1418 This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled (you *might* want to use the less safe log_bin_trust_function_creators variable) (0 ms taken) 解决方法如下: 1. mysql> SET