2017-08-09 115 views
0

我目前使用MapStruct将数据传输对象(DTO)映射到实体,反之亦然。我注意到最新的稳定版本没有提供用于检测周期的“开箱即用”功能,但是RC1版本与@Context注释一起提供。映射和限制对象映射的深度

目前,MapStruct的效果很好,但由于这些DTO和实体在这个应用程序中设置的方式,它可能会将对象映射到不必要的深度(有时它会映射数据库的重要部分一个对象)。

回答

0

“开箱即用”支持很可能意味着您必须在MapStruct上拥有运行时依赖项。我们不想这样做,因此@Context已被添加到下一个1.2.0版本。

为了避免不必要的映射,您必须明确使用@Mapping(ignore = true)和相应的targetsource

还有一个功能请求#1152,这将允许用户显式阻止访问被访问,因此总是被忽略。与杰克逊相似的东西@JsonIgnore

+0

我们在麻烦的属性上实现了'@Mapping(target =“...”,ignore = true),但应用程序的某些部分仍然需要一些被忽略的Entity/Dto属性。这是一种解决方法,但并未真正解决问题。 – unjankify

+0

您可以定义不会忽略那些属性的不同映射器/方法。什么可以解决你的问题? – Filip