Mybatis - 未映射的继承属性

时间:2012-12-06 00:00:41

标签: java generics mybatis

我有两个类,其中一个继承另一个。我正在尝试将我的resultSet映射到子类,而Mybatis忽略了超类上的属性(Setters也在超类上)

代码如下:

public class CocTreeNode extends CocBean implements TreeNode<CocTreeNode> {

  private String level1, level2;

  public void setLevel1(String level1){...}
  public void setLevel2(String level2){...}

  public String getLevel1(){...}
  public String getLevel1(){...}

}

public class CocBean {

  protected String name;
  protected Double volume;

  public void setName(String name){...}
  public void setVolume(Double volume){...}

  public String getName(){...}
  public Double getVolume(){...}

}

我的resultMap是 -

<resultMap id="simpleRow" type="CocTreeNode">
  <id property="level1" column="LEVEL1"/>
  <id property="level2" column="LEVEL2"/>
  <result property="name" column="NAME"/>
  <result property="volume" column="VOLUME"/>
</resultMap>

生成的CocTreeNode对象使用'level1'和'level2'属性填充,但不填充'name'和'volume'。

我尝试使用扩展程序,但没有任何区别。

任何想法都将受到赞赏。

1 个答案:

答案 0 :(得分:15)

您必须在simpleRow结果图中使用 extends 来扩展CocBean结果图中的属性:

<resultMap id="CocBeanResult" type="CocBean">
    <result property="name" column="NAME"/>
    <result property="volume" column="VOLUME"/>
</resultMap>

<resultMap id="simpleRow" type="CocTreeNode" extends="CocBeanResult">
    <result property="level1" column="LEVEL1"/>
    <result property="level2" column="LEVEL2"/>
</resultMap>