使用 MapStruct 将两个 long 映射到另一个对象

Map two longs into another object with MapStruct

我正在尝试使用 mapstruct 生成映射器。 我需要将两个双打(经度和纬度)映射到 org.hibernate.spatial.GeometryType.Point

我在文档中找不到如何执行此操作的任何好的示例。

我试过了(没用):

@Mapping(target="location", expression="java( new com.vividsolutions.jts.geom.GeometryFactory().createPoint(new com.vividsolutions.jts.geom.Coordinate(requestModel.longitude, requestModel.latitude)) )")

抱歉代码行太长了。

我不确定为什么表达式不起作用,我通常会尽量避免使用它,因为它不能很好地进行重构等,但您可以检查生成的代码以查看遗漏了什么 运行 它通过调试器。

您也可以使用 decorators

在代码中处理此问题

基于文档的一些未经测试的示例代码:

 @AfterMapping
 protected void mapPoint(RequestModel requestModel, @MappingTarget TargetEntity result) {
        result.setLocation(
            new GeometryFactory().createPoint(
                new Coordinate(requestModel.longitude,requestModel.latitude
                )
            )
        );
 }