问题描述如下:
tableA
aid(not null)   acol1   acol2
1                AAA     AAA
2                AAAA    AAAA
3                AAAAA   AAAAAtableB
bid(not null)   aid(not null)   bcol1   bcol2
1                 1             b11     b12
2                 2             b21     b22 pojo对象如下:
public class TableA implements Serializable {
   private int aid;
   private String acol1;
   private String acol2;
   private List<TableB> tablebList;
}现在想在sqlmap中进行配置,希望查询tableA记录的时候顺便把与tableA记录相关的tableB记录一起查询出来放到TableA对象的属性tablebList当中。配置如下:
<resultMap id="TableA-Result-List" class="tablea" groupBy="aid">
        <result property="aid" column="aid"/>
        <result property="acol1" column="acol1"/>
        <result property="acol2" column="acol2"/>
        <result property="tablebList" resultMap="TableB-Reslut-List"/>    
</resultMap>
这里是想让执行查询语句的时候自动把属于aid的tableb的记录直接被赋值到tablebList属性中。由于实际情况是tableA中的记录可能在tableB中并无对应的记录,为了保证tableA的记录全部要查出来,所以查询用了左连接:
    <select id="getAbs" resultMap="TableA-Result-List">
        select a.*, b.*  FROM tableA a left JOIN tableB b
        on b.aid=a.aid
    </select>问题出现了,左连接查询的结果包括如下一条记录:aid   acol1   acol2   bid     aid1   bcol1   bcol2
3     AAAAA   AAAAA    null   null    null    null即aid=3的记录在tableB中并无对应的记录,而tableB的bid又是不允许为空的!所以导致ibatis为tablebList属性赋值TableB对象时报了不允许为null的错误。请问大家要想达到我希望的效果(tableA记录全部取出来,并且一次把属于tableA记录的tableB记录也查出来放到TableA对象的tablebList属性中,但是有可能出现空值无法赋值的问题),应该如何在ibatis中进行配置?