I have interfaces for all of my domain objects, thus, I have something
like this contrived example:
interface Person {
Address getAddress/setAddress
String getName/setName
}
interface Address {
String getStreetName/setStreetName
}
class ConcretePerson {
// implement Person interface
}
class ConcreteAddress {
// implement Address interface
}
Person and Address are in a 1:1 relationship.
Say I want to load the address object in a join with person, how do I do
that?
<resultMap id="myResult" class="ConcretePerson">
<result property="name" column="PERSON_NAME"/>
<result property="address.streetName" column="ADDR_ST_NAME"/>
</resultMap>
<!-- using the above resultMap results in an InstantiationException
because Address is an interface -->
<select ... resultMap="myResult">
select p.name as person_name, a.name as addr_st_name
from person p, address a
where p.addr_id = a.id
</select>
Alternatively, I tried
<resultMap id="myResult" class="ConcretePerson">
<result property="name" column="PERSON_NAME"/>
<result property="address" resultMap="myAddrResult"/>
</resultMap>
<resultMap id="myAddrResult" class="ConcreteAddress">
<result property="streetName" column="ADDR_ST_NAME"/>
</resultMap>
This results in an instantiation exception as well, except the exception
occurs while attempting to populate a List for the address property.
Are there any solutions for this? IBATIS-225 looks promising, but that
is so far down in the list and this problem is blocking me currently...