gpt4 book ai didi

java - 映射器没有使用另一个映射器,如何使用另一个映射器的映射器?

转载 作者:行者123 更新时间:2023-12-05 05:45:09 26 4
gpt4 key购买 nike

我正在试验 MapStruct,我想让一个映射器使用另一个映射器将多个对象组合成一个。对于我的测试,我有三个域对象,DomainObject1DomainObject2DomainObject3。我想将 DomainObject1 转换为一个 DTO,TransferObjectA,它有一个字段包含第二个 DTO,TransferObjectB,它是使用 构造的DomainObject2DomainObject3

我有两个映射器,一个将 DomainObject2DomainObject3 转换为 TransferObjectB,它会忽略 DomainObject2 中的一个字段所以它没有被转换:

@Mapper
public interface ObjectBMapper {

@Mapping(target = "field1", ignore = true)
TransferObjectB domainObject2ToTransferObjectB(DomainObject2 domainObject2, DomainObject3 domainObject3);
}

第二个映射器将 DomainObject1 转换为 TransferObjectA,它也接受 DomainObject2DomainObject3,因此它们可以使用上述映射器转换并放入生成的 TransferObjectA:

@Mapper(uses = ObjectBMapper.class)
public interface ObjectAMapper {

TransferObjectA domainObject1ToTransferObjectA(DomainObject1 domainObject1, DomainObject2 domainObject2, DomainObject3 domainObject3);
}

但是,ObjectBMapper 似乎没有被 ObjectAMapper 使用,并且 field1 被转换(这导致错误,因为它是一个枚举)。为什么未使用 ObjectBMapper,我如何确保 ObjectAMapper 会使用它?

最佳答案

MapStruct 目前只能使用具有单个源参数的其他映射器。有一个开放的功能请求 mapstruct/mapstruct#2081关于此功能。

您可以做的是使用包装器对象而不是多个源参数。

关于java - 映射器没有使用另一个映射器,如何使用另一个映射器的映射器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71440663/

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