ibatis-user-java mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Jeff Butler" <jeffgbut...@gmail.com>
Subject Re: Problem Converting Inline Parameters to Parameter Map
Date Tue, 30 May 2006 17:05:40 GMT
I suspect that the problem is in the code that calls this statement - you
need to do this:

employeeMaster em = new employeeMaster();
em.setOrg("someorg");
sqlMap.queryForList("getEmployeeMasters", em);

Your calling code is probably still passing in a String for #org# for the
previous version of the sql map like this:
sqlMap.queryForList("getEmployeeMasters",
"someorg");

Two other comments:

1. By convention, Java classes whould start with upper case letters
(EmployeeMaster rather than employeeMaster)
2. I don't understand what you think the the link is between parameter maps
and caching.  We use caching a lot and never use a parameter map.  I think
you only need to use parameter maps with stored procedures.

Jeff Butler

On 5/30/06, Blackburn, Gary (HHS/RHRC) <Gary.Blackburn@hhs.gov> wrote:
>
>  Hi all. I'm having trouble converting some (working) inline parameters
> to the equivalent parameter map.
>
> This works just fine:
>
>  <select id="getemployeeMasters" resultClass="org.model.employeeMaster">
>   SELECT substr(administrative_code, 1, 3) as org
>   FROM administrative_code a, employeeMaster e
>   WHERE rtrim(a.administrative_code) = rtrim(e.org)
>   AND a.administrative_code like #org#
>   GROUP BY substr(administrative_code, 1, 3)
>  </select>
>
> This does not:
>
> <parameterMap id="getemployeeMastersParam" class="org.model.
> employeeMaster">
>   <parameter property="org" />
> </parameterMap>
>
> <select id="getemployeeMasters" parameterMap="getemployeeMastersParam">
>   SELECT substr(administrative_code, 1, 3) as org
>   FROM administrative_code a, employeeMaster e
>   WHERE rtrim(a.administrative_code) = rtrim(e.org)
>   AND a.administrative_code like ?
>   GROUP BY substr(administrative_code, 1, 3)
>  </select>
>
> I get the following error:
>
> WARN - CommonsLoggingOutput.warn(44) | Erroring: id[510_1149004528570]
> message[org.springframework.jdbc.UncategorizedSQLException: (SqlMapClient
> operation): encountered SQLException [
> --- The error occurred in org/dao/ibatis/employeeMasterSQL.xml.
> --- The error occurred while preparing the mapped statement for
> execution.
> --- Check the getemployeeMasters.
> --- Cause: java.sql.SQLException: Invalid parameter object type.  Expected
> 'org.model.employeeMaster' but found 'java.lang.String'.]; nested
> exception is com.ibatis.common.jdbc.exception.NestedSQLException:
> --- The error occurred in org/dao/ibatis/employeeMasterSQL.xml.
> --- The error occurred while preparing the mapped statement for
> execution.
> --- Check the getemployeeMasters.
> --- Cause: java.sql.SQLException: Invalid parameter object type.  Expected
> 'org.model.employeeMaster' but found 'java.lang.String'.
>
>
> From what I can tell these two versions should be functionally
> equivalent but obviously they are not. (I need to convert to a parameter map
> so that I can turn on caching.)
>
> Any help would be appreciated! :-)
>
> --
>  Gary Blackburn
>

Mime
View raw message