Добрый день
У меня есть сложная модель (DDD), которую я хочу отобразить с помощью ibatis.
Моя модель выглядит следующим образом:
class A {
int id;
String title;
List <B> b;
}
abstract class B {
int id;
String title;
List <C> f;
int type;
}
class BA extends B {
BA() {
setType(1);
}
}
class BB extends B {
BB {
setType(2);
}
}
Мое текущее сопоставление XML:
<sqlMap namespace="ABC">
<resultMap id="aResult" class="A" groupBy="a_id">
<result property="id" column=""a_id" />
<result property="title" column="a_title" />
<result property="b" resultMap="ABC.bResult" />
</resultMap>
<resultMap id="bResult" class="java.util.HashMap">
<discriminator javaType="java.lang.Integer" column="b_type">
<subMap value="1" resultMap="baResult" />
<subMap value="2" resultMap="bbResult" />
</discriminator>
</resultMap>
<resultMap id="baResult" class="BA">
<result property="id" column="b_id" />
<result property="title" column="b_title" />
</resultMap>
<resultMap id="bbResult" class="BB">
<result property="id" column="b_id" />
<result property="title" column="b_title" />
</resultMap>
<select id="aselect" resultMap="aResult">
select a.id as 'a_id', a.title as 'a_title', b.id as 'b_id', b.title as 'b_title', b.type as 'b_type'
from aa a left join bb b on a.id = b.aid
</select>
Таблица
aa (
id int not null primary key,
title varchar(50) not null
)
bb (
id int not null primary key,
aid int not null,
title varchar(50) not null
type int not null
)
Наследование работает, но оно возвращает только одно в событии A (ether BA или BB), хотя b является списком и для b (BA, BB) имеется несколько строк
Не могли бы вы помочь мне?
Причиной использования классов BA и BB является то, что они содержат отдельную логику бизнеса (согласно DDD).
Я использую ibatis 2.3.4.726 для Java