在我的应用程序中,我正在使用ModelMapper库将数据传输对象映射到实体。
一个实体Library
具有包含其他实体java.util.Set
的集合(Book
)。
用户应该能够更改集合内容。
在这种情况下,将使用数据传输对象UpdateDTO
,其中包含要存储在集合中的实体Book
的标识符。
后端使用UpdateDTO
将Library
映射到实体ModelMapper
。
现在假设用户从Book
的集合中删除实体Library
。现在,UpdateDTO
包含Book
所有实体的列表,但用户未删除它们。
我希望当Book
将ModelMapper
映射到实体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