为什么mybatis放弃并返回null?

时间:2016-12-06 21:22:02

标签: java spring mybatis

@Select("Select distinct X from Table where X= #{param}")
@Results({
    @Result(column = "X", property = "a", many = @Many(select = "getIdsC")),
    @Result(column = "X", property = "b", one = @One(select = "getTGN"))
})
TG getTG(@Param("param") int param);
class TG{
  String a;
  List<Integer> b;
}

我检查了它,而对于getTGN,它返回正确的字符串,为"example"。但是,对于getIdsC,它返回null - 看起来是正确的结果,因为没有元素(可能更好的结果是空列表)。
我的问题是 如何强制mybatis返回TG tg的对象,以便: tg.a=null, tg.a="example"。此时它返回null,但a字段不为空。

1 个答案:

答案 0 :(得分:0)

您只需要反转a和b的声明类型或映射。 你能看到不一致吗?

  

property =“a”,很多 ==&gt; 字符串 a;

     

property =“b”, one ==&gt; 列表 b;

这样可以更好地运作:

  

String&lt; =&gt; @One
  列表&lt; =&gt; @Many

这个设置appart,你的代码很好,对象填充得很好,当 getIdsC 没有返回任何结果时,甚至还有一个空列表而不是null。