[ 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