问题描述如下:
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中进行配置?
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中进行配置?
解决方案 »
- 求助,log4j仅输出控制台,不输出文件!
- 注册成功后发链接去邮箱 然后激活
- 关于日志的问题
- 请问下structs的基本问题
- 未处理的异常类型 unkonwnhostexception
- Extjs 全局风格切换问题 【求助贴】【Extjs】【周末加班 在线求助】
- jasper 中的error loading *.jasper问题
- 求:MySql+EJB+CMP,数据库主键自动增长解决方案
- 能不能找到struts的api 阿
- 有关session Bean调用cmp的问题!散分!!!
- javax.servlet.ServletException: Servlet.init() for servlet jsp threw exception急
- Eclipse签出CVS项目,空包不显示,求解·
在postgre里,我抽出对象的时候可以写成
null::varchar你用的应该是Oracle吧,你要不用nvl(,)把他填上值