$[].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.