2013-11-26 47 views
0

我在推土機上的映射中掙扎。我的課的基本結構是這樣的:僅在推土機上索引的吸氣劑

class Foo { 

    private String someString; 

    public String getSomeString() { 
     return someString; 
    } 

    public void setSomeString(String someString) { 
     this.someString = someString; 
    } 
} 

和有趣的部分:

class Bar { 

    // note that no field is declared 

    public String[0] getSomeBarString() { 
     // This returns an array where the acctually desired string is a index 0 
    } 

    public void setSomeBarString(String someString) { 
     // stores the string otherwise 
    } 
} 

補償無場和名稱不同的getter/setter方法是相當簡單:

<mapping> 
    <class-a>Foo</class-a> 
    <class-b>Bar</class-b> 
    <field> 
     <a>someString</a> 
     <b get-method="getSomeBarString" set-method="setSomeBarString">someBarString</b> 
    </field> 
</mapping> 

從我的理解,我甚至可以省略get-methodset-method,因爲默認情況下沒有字段訪問。

我的問題是getter被索引,setter不是。我已經閱讀了關於indexed property mapping,但它是這樣做的。有沒有辦法讓索引只有一個方向?例如。 get-method="getSomeBarString[0]"會工作嗎?

回答

0

經過一夜的睡眠,我自己有了一個想法。我只是定義了兩種單向映射,並使其中一個索引。同樣,即使您聲明不同的get-methodset-method,也會以同樣的方式(在屬性名稱後面)定義索引。

<mapping type="one-way"> 
    <class-a>Foo</class-a> 
    <class-b>Bar</class-b> 
    <field> 
     <a>someString</a> 
     <b set-method="setSomeBarString">someBarString</b> 
    </field> 
</mapping> 

<mapping type="one-way"> 
    <class-a>Bar</class-a> 
    <class-b>Foo</class-b> 
    <field> 
     <a get-method="getSomeBarString">someBarString[0]</a> 
     <b>someString</b> 
    </field> 
</mapping>