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

时间:2017-07-12 20:39:35

标签: 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)) )")

很抱歉很长的代码行。

1 个答案:

答案 0 :(得分:0)

我不确定为什么表达式不起作用,我通常会尽量避免使用它,因为它不能很好地重构等等,但你可以查看生成的代码来查看& #39;被错过并通过调试器运行。

您也可以使用decorators

在代码中处理此问题

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

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