Hi I'm having problems mapping to a property which is a Set of java5 enums.
I have a class CounterpartyHedgeVO which has the property creditEvents which is a Set<CreditEventEnum>. Not sure what the problem is but I'm guessing that iBATIS tries to treat the Enum like a POJO and fails to create it since there isn't a public constructor. Or? Any help would be really appreciated. My current sqlmap (omitted the typeAlias definitions): <resultMap class="CounterpartyHedgeVO" id="CounterpartyHedgeVOResult" groupBy="refNo"> <result column="POS_RefNoADB" jdbcType="VARCHAR" property="refNo"/> <result column="PRT_Code" jdbcType="VARCHAR" property="prtCode"/> <result column="RBE_CodeCpty" jdbcType="VARCHAR" property="counterpartyCode"/> <result column="POS_Tradebook" jdbcType="VARCHAR" property="tradeBook"/> <result resultMap="CDS_HEDGE.CreditEventEnumResult" property="creditEvents"/> </resultMap> <resultMap class="CreditEventEnum" id="CreditEventEnumResult"> <result column="CRE_EventType" property="value" jdbcType="VARCHAR" typeHandler="hedge.dao.CreditEventEnumReadOnlyTypeHandler"/> </resultMap> Stack trace: --- The error occurred in ibatis/sqlmap-map-cds-hedge.xml. --- The error occurred while applying a result map. --- Check the CDS_HEDGE.CreditEventEnumResult. --- The error occured while instantiating the result object --- Cause: java.lang.RuntimeException: JavaBeansDataExchange could not instantiate result class. Cause: java.lang.InstantiationException: hedge.interfaces.CreditEventEnum at com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeQueryWithCallback(GeneralStatement.java:188) at com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeQueryForList(GeneralStatement.java:123) at com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForList(SqlMapExecutorDelegate.java:615) at com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForList(SqlMapExecutorDelegate.java:589) at com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.queryForList(SqlMapSessionImpl.java:118) at org.springframework.orm.ibatis.SqlMapClientTemplate$3.doInSqlMapClient(SqlMapClientTemplate.java:298) at org.springframework.orm.ibatis.SqlMapClientTemplate.execute(SqlMapClientTemplate.java:209) ... 40 more Caused by: java.lang.RuntimeException: JavaBeansDataExchange could not instantiate result class. Cause: java.lang.InstantiationException: hedge.interfaces.CreditEventEnum at com.ibatis.sqlmap.engine.exchange.JavaBeanDataExchange.setData(JavaBeanDataExchange.java:108) at com.ibatis.sqlmap.engine.mapping.result.BasicResultMap.setResultObjectValues(BasicResultMap.java:373) at com.ibatis.sqlmap.engine.mapping.result.BasicResultMap.setNestedResultMappingValue(BasicResultMap.java:449) at com.ibatis.sqlmap.engine.mapping.result.BasicResultMap.applyNestedResultMap(BasicResultMap.java:396) at com.ibatis.sqlmap.engine.mapping.result.BasicResultMap.setResultObjectValues(BasicResultMap.java:382) at com.ibatis.sqlmap.engine.mapping.statement.RowHandlerCallback.handleResultObject(RowHandlerCallback.java:64) at com.ibatis.sqlmap.engine.execution.SqlExecutor.handleResults(SqlExecutor.java:382) at com.ibatis.sqlmap.engine.execution.SqlExecutor.handleMultipleResults(SqlExecutor.java:301) at com.ibatis.sqlmap.engine.execution.SqlExecutor.executeQueryProcedure(SqlExecutor.java:283) at com.ibatis.sqlmap.engine.mapping.statement.ProcedureStatement.sqlExecuteQuery(ProcedureStatement.java:34) at com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeQueryWithCallback(GeneralStatement.java:173) ... 46 more Caused by: java.lang.InstantiationException: hedge.interfaces.CreditEventEnum at java.lang.Class.newInstance0(Class.java:340) at java.lang.Class.newInstance(Class.java:308) at com.ibatis.common.resources.Resources.instantiate(Resources.java:294) at com.ibatis.sqlmap.engine.mapping.result.ResultObjectFactoryUtil.createObjectInternally(ResultObjectFactoryUtil.java:127) at com.ibatis.sqlmap.engine.mapping.result.ResultObjectFactoryUtil.createObjectThroughFactory(ResultObjectFactoryUtil.java:95) at com.ibatis.sqlmap.engine.exchange.JavaBeanDataExchange.setData(JavaBeanDataExchange.java:106) ... 56 more Cheers, Micke