[
http://issues.apache.org/jira/browse/IBATIS-352?page=comments#action_12441427 ]
Andrew Bethell commented on IBATIS-352:
---------------------------------------
I apologise for the poor description of my problem, hopefully I can give a
clearer overview of the problem this time.
I have a custom Type Handler that converts VARCHAR values ('ACT' , 'DEL',
'DIS'... ) to Enum types (Active / Deleted / Disabled ..). I followed the
guide on the Ibatis Wiki that explains how to use custom type handlers with
java 5 enums - and everything worked fine initially, but after I completed
mapping my objects I started getting bulkbean exceptions.
I think I have isolated the problem to when custom typehandlers are applied to
the items of collection-complex properties, that are loaded with joins &
resultMaps.
When selecting data- populating a single complex property which uses a custom
type handler works fine, when lazy loading and using joins + nested property
mappings.
However, when populating a complex property which is a collection (tried Set
and List), and the resultMap for that collection has a custom property - a
bulkbeanexception is thrown (join-resultmap with enum.txt). - eg
(from my Article.xml)
<resultMap id="articleResult" class="org.andy.sandbox.domain.Article"
groupBy="id">
...
<result property="resources" javaType="java.util.TreeSet"
resultMap="Resource.resourceResult"/>
..
</resultMap>
In this example - resourceResult contains a property which uses a custom type
handler. This happens when I declare a typehandler in my sqlMapConfig - ie
<typeHandler javaType="org.andy.sandbox.domain.RecordStatus"
callback="org.andy.sandbox.dao.RecordTypeHandler"/>
and also when specifying a typehandler for a specific property - - in this case
I am just mapping to a value of type boolean
<result property="statuss" column="RESOURCE_REC_STATUS"
typeHandler="org.andy.sandbox.dao.TestTypeHandler"/>-
If I remove the mappings for these properties, my selects work fine.
The same problem does not occur when lazy-loading a collection of items which
have custom-type properties - ie
(from my Issue.xml)
<resultMap id="issueResult" class="org.andy.sandbox.domain.Issue" groupBy="id">
...
<result property="articles" column="ISSUE_ID"
select="Article.getArticlesByIssue"/>
...
</resultMap>
> Problems with Complex Properties + Sets & enums
> -----------------------------------------------
>
> Key: IBATIS-352
> URL: http://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: join-resultmap with enum.txt, lazy-load with set.txt
>
>
> 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:
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira