jos*_*ose 5 java mapping orika
我正在尝试了解如何正确配置Orika类映射,以防我继承类.
我已经建立了一个简单的例子,以便能够理解什么在起作用,哪些起作用,但我不明白.
public class Source {
private final String alpha;
public Source(final String alpha) {
this.alpha = alpha;
}
public String getAlpha() {
return alpha;
}
}
public final class SourceExtended extends Source {
private final String beta;
public SourceExtended(final String alpha, final String beta) {
super(alpha);
this.beta = beta;
}
public String getBeta() {
return beta;
}
}
public final class Target {
private final String alpha;
private final String beta;
public Target (final String alpha) {
this(alpha, null);
}
public Target(final String alpha, final String beta) {
this.alpha = alpha;
this.beta = beta;
}
public String getAlpha() {
return alpha;
}
public String getBeta() {
return beta;
}
}
Run Code Online (Sandbox Code Playgroud)
我正在进行如下映射
Source s = new Source("alpha");
Target t = this.mapper.map(s, Target.class);
SourceExtended s = new SourceExtended("alpha", "beta");
Target t = this.mapper.map(s, Target.class);
Run Code Online (Sandbox Code Playgroud)
我尝试了以下配置......
factory.classMap(SourceExtended.class, Target.class)
.byDefault()
.register();
factory.classMap(Source.class, Target.class)
.byDefault()
.register();
Run Code Online (Sandbox Code Playgroud)
结果:两个映射都已编译并运行,但未在SourceExtended对象的目标中设置beta,因此SourceExtended的映射不起作用.
所以我认为如果我明确说明要使用的构造函数,那么beta也应该映射:
factory.classMap(SourceExtended.class, Target.class)
.byDefault()
.constructorA("alpha", "beta")
.constructorB("alpha", "beta")
.register();
factory.classMap(Source.class, Target.class)
.byDefault()
.register();
Run Code Online (Sandbox Code Playgroud)
但结果是一样的.beta未映射.如果我通过指定字段或通过将构造函数添加到Source.class的映射配置来替换默认映射,则它不会更改.
任何人都可以给我一个提示如何配置这样的映射?谢谢!
亲切的问候,何塞
是的,您可以使用ClassMapBuilder.use它将自动使用父类的现有映射.
在这里我已经从现有的映射TicketEntity到Conversation,我想它映射到新的DetailedConversation(即有额外的字段),我做到了,像这样:
mapperFactory.classMap(TicketEntity.class, DetailedConversation.class)
.use(TicketEntity.class, Conversation.class)
.customize(conversationMapper())
.byDefault()
.register();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5315 次 |
| 最近记录: |