为什么 ModelMapper 以合并方式映射集合?

Dan*_*iel 3 java modelmapper

在我的应用程序中,我使用 ModelMapper 库将数据传输对象映射到实体。

一个实体Library有一个包含其他实体的集合( java.util.Set) Book。用户应该能够更改集合内容。

UpdateDTO在这种情况下,使用包含Book要存储在集合中的实体的标识符的数据传输对象。

后端使用映射UpdateDTO到实体。LibraryModelMapper

现在假设用户Book从 集合中删除一个实体Library。nowUpdateDTO包含所有实体的列表,其中Book没有被用户删除的实体。

我希望集合在将 映射到实体Book时缺少用户删除的实体。但与我的预期不同的是,返回的实体仍然包含所有实体。ModelMapperUpdateDTOLibraryLibraryBook

这是为什么?我已将“问题”确定为CollectionConverter[0] 中的这些行。

[0] https://github.com/modelmapper/modelmapper/blob/master/core/src/main/java/org/modelmapper/internal/converter/CollectionConverter.java#L62-L63

Dan*_*iel 5

的存储库ModelMapper包含有关同一问题的问题 [0],解释了当前实现的工作原理以及代码,以便ModelMapper在源大小小于目标大小时删除项目。

[0] https://github.com/modelmapper/modelmapper/issues/423