我有一个映射器,对于目标类的特定属性,需要从源对象内的对象列表中选择一个,并使用不同的映射器类对其进行映射。
简化了很多,Game
类包含一个Transaction
对象列表,我的GameMapper
类如下所示:
@Component
@Mapper(injectionStrategy = InjectionStrategy.CONSTRUCTOR, uses = {TransactionMapper.class, EventMapper.class})
public interface GameMapper {
@Mapping(target = "transaction",
expression = "java(transactionMapper.transactionToDto(findTransactionForPlayer(game, idPlayer)))")
GameResultDto gameToGameResultDto(Game game, Long idPlayer);
// Some more methods
}
问题是,EventMapper
被生成为私有最终事件映射器EventMapper
GameMapperImpl
中的code>属性,但TransactionMapper
不是,因此生成失败,因为MapStruct找不到TransactionMapper
。
我最好的猜测是,这是由于在GameMapper
中没有其他方法显式地使用TransactionMapper
,因此Mapstrt决定不需要它,并且没有在实现中注入它。
那么,是否有任何方法可以强制MapSTRt将映射器包含在use
子句中,即使它们看起来没有被使用,或者有任何其他方法可以解决这个问题?
我最好的猜测是,这是由于在GameMapper
中没有其他方法显式地使用TransactionMapper
,因此Mapstrt决定不需要它,并且没有在实现中注入它。
没错。如果MapStruct未使用映射程序,MapStruct将不会从映射程序#使用的中注入映射程序。
你可以使用一个抽象类。
例如
@Mapper(injectionStrategy = InjectionStrategy.CONSTRUCTOR, componentModel = "spring", uses = {TransactionMapper.class, EventMapper.class})
public abstract class GameMapper {
@Autowired
protected TransactionMapper transactionMapper;
@Mapping(target = "transaction",
expression = "java(transactionMapper.transactionToDto(findTransactionForPlayer(game, idPlayer)))")
public abstract GameResultDto gameToGameResultDto(Game game, Long idPlayer);
// Some more methods
}
我想用Kotlin中的Mapstruct将实体映射到带有嵌套DTO的DTO。 在Java中,这是这样的:。 应该如何使用Kotlin实现它?
我在我的项目中使用了mapstruct,它可以直接工作(所有的mapper都在一个包中)。现在我有了将一个映射器移动到另一个包的要求,但这并不能很好地工作。 你能帮我解决这个问题吗? 编辑包结构1的结果CarMapperImpl.java:
我想把一个模型对象映射到dto模型。我已经有一个对象的映射器。我如何在另一个类中的另一个映射器中重用这个映射器? 我有下面的模型 这是我的地图 我希望将History映射到HistoryDynamo并重用IdentifierMapper映射HistoryDynamo中的一个对象。如何在ToHistoryDynamo中使用toIdentifierDynamo?
我和mappstruct一起工作,我有一个问题,我不知道mapstruct是否能帮上忙。问题是我有一个DATA类。 和地址 和“人” @Mapper公共接口DataToPerson { }
我最近开始使用mapstruct,在编码时我坚持使用一个场景。为了解决下面默认方法之间的模糊性,我试图在列表中使用“限定由” 但是第1行显示错误,因为需要指定“target”。我不确定这里的目标应该是什么,因为Line是一个集合对象。即使我不使用@mapping,mapstuct也会生成mapper实现。我阅读了mapstuct文档,但对这个场景了解不多。如何在列表上使用命名注释来明确表示这是要使
这是我的例子。 我希望toDto方法使用toDto将Employee映射到EmployeeDto,但mapstruct会生成employeeDtoToEmployeeDto方法。我该怎么修? 谢谢