我已经在ModelMapper转换中成功使用了Provider,但我偶然发现了一个奇怪的情况。我注意到提供商只被考虑用于超过"第一级"转型,例如: 我有两个层次结构: 1)TipoConsultarProcessoResposta,TipoProcessoJudicial和TipoDocumento 2)ConsultarProcessoResposta,ProcessoJudicial和Documento TipoConsultarProcessoResposta有一个TipoProcessoJudicial,而TipoProcessoJudicial又有一个TipoDocumento列表,第二个层次结构重新包含第一个层次结构。 我正在从第一个层次结构转换为第二个层次结构,并且提供程序在TipoDocumento到Documento转换时工作正常,但是它被TipoProcessoJudicial转换为ProcessoJudicial时被忽略。
以下是代码的相关部分:
modelMapper = new ModelMapper();
modelMapper.getConfiguration().setMatchingStrategy(STRICT);
modelMapper.addMappings(new DocumentoPropertyMap()).setProvider(documentoProvider);
modelMapper.addMappings(new ProcessoJudicialPropertyMap()).setProvider(processoJudicialProvider);
ConsultarProcessoResposta resposta = modelMapper.map(tipoConsultarProcessoResposta, ConsultarProcessoResposta.class);
DocumentoPropertyMap extends PropertyMap<TipoDocumento, Documento> and ProcessoJudicialPropertyMap extends PropertyMap<TipoProcessoJudicial, ProcessoJudicial>.
问题是正在调用DocumentoProvider但是没有调用ProcessoJudicialProvider。 ModelMapper尝试调用失败的全局提供程序,并通过构造函数进行实例化。