[ https://issues.apache.org/jira/browse/IBATIS-550?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12642942#action_12642942 ]
pascal jacob commented on IBATIS-550: ------------------------------------- A very simple patch in the iBatis source code resolved this issue: in file: ibatis-2.3.4.726\src\ibatis-src\com\ibatis\common\beans\ProbeFactory.java in method: getProbe(), line: 33 replaced: return GENERIC; by: return BEAN; > $[].xxx$ expressions are not interpreted correctly > -------------------------------------------------- > > Key: IBATIS-550 > URL: https://issues.apache.org/jira/browse/IBATIS-550 > Project: iBatis for Java > Issue Type: Bug > Components: SQL Maps > Affects Versions: 2.3.4 > Reporter: pascal jacob > > I encountered a 'com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException' > while executing the following SQL script: > <statement id="create-table" parameterClass="list"> > CREATE TABLE data > <iterate open="(" close=")" conjunction=","> > $[].name$ $[].type$ > </iterate> > </statement> > The java code that prepare the list parameter and execute the SQL script is > as follow: > ... > sqlMapClient.startTransaction(); > sqlMapClient.update("create-table", prepareCreateTableParams()); > sqlMapClient.commitTransaction(); > ... > private List<Map<String, String>> prepareCreateTableParams( > final String[] columnNames, final String[] columnTypes) { > List<Map<String, String>> params = > new ArrayList<Map<String, String>>(); > for(int i = 0; i < columnNames.length; i++) { > HashMap<String, String> map = new HashMap<String, String>(); > map.put("name", columnNames[i]); > map.put("type", columnTypes[i]); > params.add(map); > } > return params; > } > and the exception was: > com.ibatis.common.jdbc.exception.NestedSQLException: > --- The error occurred while applying a parameter map. > --- Check the create-seqnsdata-table-InlineParameterMap. > --- Check the statement (update failed). > --- Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: > You have an error in your SQL syntax; check the manual that corresponds > to your MySQL server version for the right syntax to use near ' , > , , , , , , ' > at line 1 > at > com.ibatis.sqlmap.engine.mapping.statement.MappedStatement.executeUpdate(MappedStatement.java:107) > at > com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.update(SqlMapExecutorDelegate.java:457) > at > com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.update(SqlMapSessionImpl.java:90) > at > com.ibatis.sqlmap.engine.impl.SqlMapClientImpl.update(SqlMapClientImpl.java:66) > at net.eads.iw.seqns.CsvJdbcInjector.inject(CsvJdbcInjector.java:117) > ... 1 more > It seems that iBatis is not correctly replacing $[].name$ and $[].type$ by > the value supplied in the list of map of string, string. -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.