I'm having a hard time with groupBy and hashmaps. I'm getting an exception: "Error instantiating collection property for mapping 'blog'. Cause: java.lang.ClassCastException: java.lang.Object"
I call queryForMap("getBlogAndCategoriesForContent", parameters, "blog", "category"); When my query completes, I'm expecting a Map<Blog, List<Category>> to be returned. Am I asking too much from Ibatis? I have the following result maps/queries. <!-- stuff cut --> <resultMap id="metadataNoContentId" class="cnwk.blogs.beans.Metadata"> <!-- stuff cut --> <result property="typeId" column="typeId"/> </resultMap> <resultMap id="categoryDetails" class="cnwk.blogs.beans.Category" extends="metadataNoContentId"> <result property="contentId" column="category.contentId"/> <result property="name" column="category.name"/> </resultMap> <resultMap id="blogAndCategoryMapping" class="java.util.HashMap" groupBy="blog.contentId"> <result property="blog" resultMap="Content.blogDetails"/> <result property="category" resultMap="Content.categoryDetails"/> </resultMap> <!-- sql select fragments --> <sql id="selectBlogAndCategoryMap"> SELECT * FROM $databaseName$.blogAndCategoryMap JOIN $databaseName$.metadata ON metadata.contentId = blogAndCategoryMap.categoryContentId JOIN $databaseName$.category ON metadata.contentId = category.contentId JOIN $databaseName$.metadata AS blogMetadata ON blogAndCategoryMap.blogContentId = blogMetadata.contentId JOIN $databaseName$.blog ON blogMetadata.contentId = blog.contentId </sql> <sql id="blogAndCategoriesForOne"> WHERE blogAndCategoryMap.contentId = #contentId# </sql> <!-- single mapping queries --> <select id="getBlogAndCategoriesForContent" parameterClass="map" resultMap="blogAndCategoryMapping"> <include refid="selectBlogAndCategoryMap"/> <include refid="blogAndCategoriesForOne"/> </select>