我在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-method
和set-method
,因为默认情况下没有字段访问权。
我的问题是getter被编入索引,而setter则没有。我已经读过关于indexed property mapping的内容了,但它是双向的。有没有办法只将一个方向编入索引?例如。会get-method="getSomeBarString[0]"
工作吗?
答案 0 :(得分:0)
get-method
或set-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>