Java 当目标是Protobuf生成器时,如何在ModelMapper中添加自定义映射?

Java 当目标是Protobuf生成器时,如何在ModelMapper中添加自定义映射?,java,protocol-buffers,modelmapper,Java,Protocol Buffers,Modelmapper,我正在尝试将源DTO映射到协议缓冲区对象。但是,源DTO中字段的名称与协议缓冲区对象中的名称不匹配,因此我需要添加自定义映射。我看到了两种方法,但两种方法都有问题。这个问题都源于java协议缓冲区中的构建器是最终的,所以在尝试添加自定义映射时,我总是遇到“无法映射最终类型”的问题。这样做的结果是,似乎不可能为目标为protobuf对象的任何对象添加自定义映射 因为ModelMapper为Protobuf创建了一个完整的库,所以我假设这里一定有一些解决方法,但我找不到它 所讨论的值需要从Long映

我正在尝试将源DTO映射到协议缓冲区对象。但是,源DTO中字段的名称与协议缓冲区对象中的名称不匹配,因此我需要添加自定义映射。我看到了两种方法,但两种方法都有问题。这个问题都源于java协议缓冲区中的构建器是最终的,所以在尝试添加自定义映射时,我总是遇到“无法映射最终类型”的问题。这样做的结果是,似乎不可能为目标为protobuf对象的任何对象添加自定义映射

因为ModelMapper为Protobuf创建了一个完整的库,所以我假设这里一定有一些解决方法,但我找不到它

所讨论的值需要从Long映射到Int64Value

我尝试过的解决方案:

mapper.registerModule(新ProtobufModule());
typeMap(SourceDTO.class、Target.Builder.class)
.addMappings(map->map.map(src->src.getField(),(dest,val)->dest.setTargetField(Int64Value.newBuilder().setValue((Long)value).build());
由于
无法映射最终类型com.package.Target$Builder,该解决方案失败。

mapper.registerModule(新ProtobufModule());
typeMap(SourceDTO.class、Target.Builder.class)
.addMappings(新属性映射(){
@凌驾
受保护的void configure(){
map().setTargetField(Int64Value.newBuilder().setTargetValue(source.getField()).build());
}
});
由于
无法映射最终类型com.google.protobuf.Int64Value$Builder,该解决方案失败。

我看到解决方案再次出现,我使用
使用(IntConverters.LONG\u VALUE\u TO\u LONG)
来解决
Int64Value$Builder
是最终解决方案的问题,但这些解决方案要求我使用方法引用来解决类型问题,我不能对
Target.Builder::setTargetValue
进行方法引用,因为这是一个不明确的方法引用,因为该方法重载了。(一个带有Int64Value参数,另一个带有Builder参数)

在我看来,这最后一个类型限制使得映射到目标协议缓冲区变得不可能。以前有人对此争论过并找到了解决办法吗