我尝试使用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)) )")
很抱歉很长的代码行。
答案 0 :(得分:0)
我不确定为什么表达式不起作用,我通常会尽量避免使用它,因为它不能很好地重构等等,但你可以查看生成的代码来查看& #39;被错过并通过调试器运行。
您也可以使用decorators
在代码中处理此问题基于文档的一些未经测试的示例代码:
@AfterMapping
protected void mapPoint(RequestModel requestModel, @MappingTarget TargetEntity result) {
result.setLocation(
new GeometryFactory().createPoint(
new Coordinate(requestModel.longitude,requestModel.latitude
)
)
);
}