gpt4 book ai didi

java - 非平凡的推土机映射

转载 作者:搜寻专家 更新时间:2023-10-31 20:07:38 25 4
gpt4 key购买 nike

我正在努力获得 Dozer为了一些我觉得应该很简单的事情而屈服于我的意志。我有两个类似的模型,我希望在它们之间进行映射,但是其中一个具有比另一个“更深”的层次结构,这在处理集合时给我带来了问题。考虑以下类:

源类:

class Foo {
String id;
NameGroup nameGroup;
// Setters/Getters
}

class NameGroup {
private List<Name> names;
// Setters/Getters
}

class Name {
private String nameValue;
// Setters/Getters
}

目标类:

class Bar {
private String barId;
private BarNames barNames;
// Setters/Getters
}

class BarNames {
private List<String> names;
// Setters/Getters
}

现在我想要以下单向映射:

Foo.id -> Bar.barId // Simple enough

但是我需要:

Foo.nameGroup.names.nameValue -> Bar.barNames.names

因此 Foo.nameGroup.names 中的每个 Name 实例都应该导致 String 被添加到 BarNames.names 列表。这可能吗?

最佳答案

只要您的“Name”类包含 String 构造函数,就可以使用 Dozer 轻松完成此操作。

引自 Dozer 文档 ( http://dozer.sourceforge.net/documentation/simpleproperty.html ):

Data type coversion is performed automatically by the Dozer mapping engine. Currently, Dozer supports the following types of conversions: (these are all bi-directional)

...

String to Complex Type if the Complex Type contains a String constructor

...

我已经用你上面的类测试了这个(我遇到了同样的问题)并且它工作得很好。这是我使用的映射:

<mapping>
<class-a>com.test.bar.Bar</class-a>
<class-b>com.test.foo.Foo</class-b>
<field>
<a>barId</a>
<b>id</b>
</field>
<field>
<a>barNames.names</a>
<b>nameGroup.names</b>
<a-deep-index-hint>java.lang.String</a-deep-index-hint>
<b-deep-index-hint>com.test.foo.Name</b-deep-index-hint>
</field>
</mapping>

关于java - 非平凡的推土机映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1916786/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com