[ 
https://issues.apache.org/jira/browse/IBATIS-352?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12462127
 ] 

Paul Benedict commented on IBATIS-352:
--------------------------------------

I actually solved the problem, but it is totally not obvious :-) 

<typeHandler javaType="org.xyz.Role" ... />

<resultMap id="userMap" class="User" groupBy="id">
  <result property="id" column="u_id" />
  <result property="roles" resultMap="NameSpace.roleResult"
</resultMap>

<resultMap id="roleResult" class="Role">
  <result property="value" column="ur_id" />
</resultMap>
  
It turns out when there is a result map with just one item in it, and you 
provide a type handler, Ibatis will treat it "like" a primitive type -- the 
first result is the value. Who would have thought!!

This is really not obvious at all. I recommend IBATIS adds a resultClass to the 
<result> tag so that users don't need yet another map to translate single 
values (enums and primitives in collections especially). Hence this would 
become:

<resultMap id="userMap" class="User" groupBy="id">
  <result property="id" column="u_id" />
  <result property="roles" column="ur_id" resultClass="Role" />
</resultMap>


> Problems with Complex Properties + Sets & enums
> -----------------------------------------------
>
>                 Key: IBATIS-352
>                 URL: https://issues.apache.org/jira/browse/IBATIS-352
>             Project: iBatis for Java
>          Issue Type: Bug
>          Components: SQL Maps
>    Affects Versions: 2.2.0
>         Environment: JDK 1.5, IBATIS SQL Maps 2.2.0.638, Spring 2.0
>            Reporter: Andrew Bethell
>         Attachments: domain.zip, join-resultmap with enum.txt, lazy-load with 
> set.txt, sqlmap.zip
>
>
> There doesnt seem to be support for lazy-loading complex properties of type 
> 'java.util.Set', only List collections -  (stack trace attached to this 
> issue).
> I have to use Set collections at the moment, as when I upgraded from IBATIS 
> SQLMaps 2.17 to 2.22, the 'groupBy' attribute for resultmaps did not seem to 
> make data in (List) complex properties distinct by ID, where as in version 
> 2.17 this was the case.
> Strangely though, when loading complex properties with joins+resultMaps, Set 
> properties work correctly - except when items in the Set contain enum types 
> (stack trace attached for this too).

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: 
https://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to