[
https://issues.apache.org/jira/browse/IBATIS-459?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Larry Meadors closed IBATIS-459.
--------------------------------
Resolution: Fixed
PLEASE POST SUPPORT REQUESTS ON THE MAILING LISTS BEFORE CREATING JIRA ISSUES.
> Second consecutive dynamic SQL incorrectly using value from first SELECT
> ------------------------------------------------------------------------
>
> Key: IBATIS-459
> URL: https://issues.apache.org/jira/browse/IBATIS-459
> Project: iBatis for Java
> Issue Type: Bug
> Components: SQL Maps
> Affects Versions: 2.3.0
> Environment: Java HotSpot(TM) Client VM (build 1.6.0_01-b06, mixed
> mode, sharing)
> ibatis-2.3.0.677.jar
> mysql-connector-java-5.0.7-bin.jar
> 5.0.37-community-log MySQL Community Edition (GPL)
> Spring Framework 2.0.1
> SuSE 9.3
> Reporter: Janek Bogucki
>
> When these two dao methods are invoked
> funDao.getUQProviderDescMostRecentDistinct("lang");
> funDao.getUQProviderDescMostRecentDistinct("pid"); <-- Throws
> exception
> this exception results on the second statement:
> [junit] SqlMapClient operation; bad SQL grammar []; nested exception is
> com.ibatis.common.jdbc.exception.NestedSQLException:
> [junit] --- The error occurred in data/fun-sqlmap.xml.
> [junit] --- The error occurred while applying a result map.
> [junit] --- Check the uqProviderDescMostRecentDistinct-AutoResultMap.
> [junit] --- Check the result mapping for the 'lang' property.
> [junit] --- Cause: java.sql.SQLException: Column 'lang' not found.
> Column 'lang' is not used in the underlying dynamic SQL:
> <select id="uqProviderDescMostRecentDistinct" resultClass="string"
> parameterClass="string">
> select distinct $value$ from uqProviderDesc where updateQueueId =
> (select max(id) from updateQueue) order by $value$
> </select>
> The same error results without the order clause
> The SQL send to MySQL is correct as can be seen from these mysql log entries
> 9366 906 Query select distinct lang from
> uqProviderDesc where updateQueueId = (select max(id) from updateQueue) order
> by lang
> 9374 907 Query select distinct pid from
> uqProviderDesc where updateQueueId = (select max(id) from updateQueue) order
> by pid
> My DAO is based on the Spring Framework support for IBATIS,
> package tests.com.studylink.data.fun;
> import java.util.List;
> import org.apache.commons.lang.Validate;
> import org.springframework.orm.ibatis.support.SqlMapClientDaoSupport;
> public class SqlMapFunDao extends SqlMapClientDaoSupport implements FunDao {
> public List<String> getUQProviderDescMostRecentDistinct(String field){
> Validate.notNull(field);
> return
> (List<String>)getSqlMapClientTemplate().queryForList("uqProviderDescMostRecentDistinct",
> field);
> }
> }
> --
> When the Java statements are swapped the error message changes
> funDao.getUQProviderDescMostRecentDistinct("pid");
> funDao.getUQProviderDescMostRecentDistinct("lang"); <-- Throws
> exception
> [junit] Caused by: com.ibatis.common.jdbc.exception.NestedSQLException:
> [junit] --- The error occurred in data/fun-sqlmap.xml.
> [junit] --- The error occurred while applying a result map.
> [junit] --- Check the uqProviderDescMostRecentDistinct-AutoResultMap.
> [junit] --- Check the result mapping for the 'pid' property.
> [junit] --- Cause: java.sql.SQLException: Column 'pid' not found.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.