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

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

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

后端使用UpdateDTOLibrary映射到实体ModelMapper

现在假设用户从Book的集合中删除实体Library。现在,UpdateDTO包含Book所有实体的列表,但用户未删除它们。

我希望当BookModelMapper映射到实体UpdateDTO时,集合会丢失用户删除的实体Library。但是与我的期望不同,返回的Library实体仍然包含所有Book实体。

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

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

最佳答案

ModelMapper的存储库包含有关同一问题的问题[0],说明了当前实现的工作方式和代码,因此ModelMapper如果源大小小于目标大小,则删除项目。

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

10-08 18:02