gpt4 book ai didi

java - 从不同对象映射到单个字段

转载 作者:行者123 更新时间:2023-12-01 19:34:59 25 4
gpt4 key购买 nike

首先,我想警告一下,为了使代码简洁,我删除了 getter 和 setter。

我猜代码会更准确地描述那么多单词

//Mapper is obviously as separate class
@Mapper
public interface TestMapper {
@Mapping(source = "x.field1", target="inner.field1")
@Mapping(source = "y.field2", target="inner.field2")
Target map(Source source);
}

class Source {
private X x;
private Y y;
}

class X {
private String field1;
}

class Y {
private String field2;
}

class Target {
private Inner inner;
}

class Inner {
private String field1;
private String field2;
}

public class Main {
public static void main(String[] args) {
Source source = new Source();
final X x = new X();
x.setField1("field1");
Y y = new Y();
y.setField2("field2");
source.setX(x);
source.setY(y);

final TestMapper mapper = Mappers.getMapper(TestMapper.class);
Target target = mapper.map(source);
System.out.println(source.getX().getField1().equals(target.getInner().getField1()));
System.out.println(source.getY().getField2().equals(target.getInner().getField2()));
}
}

这样的代码生成这样的实现:

public class TestMapperImpl implements TestMapper {

@Override
public Target map(Source source) {
if ( source == null ) {
return null;
}

Target target = new Target();

target.setInner( xToInner( source.getX() ) );
target.setInner( yToInner( source.getY() ) );

return target;
}
(...)

这显然会导致 Inner 的压倒性值(value)。这不是我所期望的。有办法让它发挥作用吗?或者是mapstruct中的一些错误?

最佳答案

这是 MapStruct 中的一个已知错误,已在 1.3.1.Final 版本中修复。

相关问题是mapstruct/mapstruct#1828 .

如果升级到 1.3.1.Final 后仍然遇到同样的问题,请在 MapStruct bug tracker 中提出新问题

关于java - 从不同对象映射到单个字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58178754/

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