Hi All,
I guess this is a corner case but it is pretty important one for projects
with legacy data models.
Let say there is a table in DB that contains:
Column Type
id int
s1 string
s2 string
s3 string
Also let say it is modeled (historically) by two immutable objects:
public class ObjX
{
private final int id;
private final String s1;
private final ObjY objY;
public ObjX( int id, String s1, ObjY objY )
{
...
}
}
public class ObjY
{
private final String s2;
private final String s3;
public ObjY( String s2, String s3 )
{
...
}
}
In this case there seems to be no way to build a result map for ObjX in
iBatis without changing ObjX code but what if we cannot change it?
It would be nice if we could use resultMap in <constructor>/<arg> element.
This way one could write something like:
<resultMap type="ObjX" id="ObjXResult">
<constructor>
<idArg column="id" javaType="_int" />
<arg column="s1" javaType="String" />
<arg javaType="ObjY" resultMap="ObjYResult"/>
</constructor>
</resultMap>
<resultMap type="ObjY" id="ObjYResult">
<constructor>
<arg column="s2" javaType="String" />
<arg column="s3" javaType="String" />
</constructor>
</resultMap>
Comparable result could be achieved with TypeHandler but it will require
column names to be hardcoded in the TypeHandler implementation also will
require adding one TypeHandler per each such a case.
Thanks