:oops: It's a Ibatis problem. I have posted the same one in the forum of ibatis.org. But I do want to post here, because I think here is more popular.
I am a newbie to ibatis.I came against a problem when studying ibatis!
Can't Complex Property Support Set Immediately!
I have seen the following word in Ibatis-SqlMap 2.0
P 26
<quote>
To load a List of objects,
there is no change to the statement (see example above). The only difference required to cause the SQL
Map framework to load the property as a List is that the property on the business object must be of type
java.util.List or java.util.Collection.
</quote>
Is it mean that I must use in this type
Class A
{
List bs;
// or Collection bs;
}
instead of this type
{
Set bs
}
I have done a example about this.In the same program, if I change the Complex Property form List to Set(had done the nesessary job), I throw some Exception:
Translating SQLException with SQLState 'null' and errorCode '0' and message [
--- The error occurred in ibatis/Entity.xml.
--- The error occurred while applying a result map.
--- Check the entityResult.
--- The error happened while setting a property on the result object.
--- Cause: net.sf.cglib.beans.BulkBeanException]; SQL was [(mapped statement)] for task [SqlMapClientTemplate]
org.springframework.jdbc.UncategorizedSQLException : (SqlMapClientTemplate): encountered SQLException [
--- The error occurred in ibatis/Entity.xml.
--- The error occurred while applying a result map.
--- Check the entityResult.
--- The error happened while setting a property on the result object.
--- Cause: net.sf.cglib.beans.BulkBeanException]; nested exception is com.ibatis.common.jdbc.exception.NestedSQLExceptio n:
--- The error occurred in ibatis/Entity.xml.
--- The error occurred while applying a result map.
--- Check the entityResult.
--- The error happened while setting a property on the result object.
--- Cause: net.sf.cglib.beans.BulkBeanException
com.ibatis.common.jdbc.exception.NestedSQLExceptio n:
--- The error occurred in ibatis/Entity.xml.
--- The error occurred while applying a result map.
--- Check the entityResult.
--- The error happened while setting a property on the result object.
--- Cause: net.sf.cglib.beans.BulkBeanException
Caused by: net.sf.cglib.beans.BulkBeanException
Here is my code snippet:
<resultMap id="entityResult" class="entity">
<result property="id" column = "ID"/>
<result property="name" column="NAME"/>
<result property="child" column = "ID" select="getEntityChildrenByParentEntityId"/>
</resultMap>
<select id="getEntityChildrenByParentEntityId" resultMap="entityChildResult" parameterClass="string">
select ID, NAME from ENTITYCHILD WHERE PARENT_ENTITY_ID = #value#
</select>
//I use spring stuff
public List find(Object object)
{
mapSql = ClassUtils.getShortName(object.getClass()) + "." + "find";
List list = getSqlMapClientTemplate().queryForList(mapSql, object);
return list;
}
I did could work well with List,but how can't I work with Set!
Any suggestion and hints will be appreciated!
Thanx in advance!
Regards.
Yoshiyan


Reply With Quote