仅在Dozer中使用索引的getter

时间:2013-11-26 18:21:55

标签: dozer

我在Dozer的映射中苦苦挣扎。我的课程的基本结构是:

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]"工作吗?

1 个答案:

答案 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>