2012-12-06 101 views
5

我有兩個類,其中一個繼承另一個。我想我的映射結果的子類,MyBatis的被忽略的超(二傳手也對超類)的屬性Mybatis - 未映射的繼承屬性

守則如下:

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'。

我試過使用延伸,但沒有任何區別。

任何想法將不勝感激。

+0

你確定,你的sql語句正常工作? – boskonovic

+0

是的。將CocBean(超類)的代碼複製到CocTreeNode中會導致正確設置所有屬性。 –

回答

9

你必須使用在simpleRow結果映射來從CocBean的resultMap的擴展性能擴展

<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> 
+0

就是這樣。謝謝! –

+0

我很高興你找到我的答案有幫助。那麼你應該接受它。 – Behnil

+0

我的要求已經改變,我做了超類抽象。現在擴展屬性似乎不起作用。 –