为什么 ModelMapper 映射集合合并样式?
Why does ModelMapper map collections merge-style?
在我的应用程序中,我使用 ModelMapper 库将数据传输对象映射到实体。
一个实体 Library
有一个包含其他实体 Book
的集合 (java.util.Set
)。
用户应该能够更改集合内容。
在这种情况下,使用了一个数据传输对象 UpdateDTO
,其中包含要存储在集合中的实体 Book
的标识符。
后端使用 ModelMapper
.
将 UpdateDTO
映射到实体 Library
现在假设用户从 Library
的集合中删除实体 Book
。 UpdateDTO
现在包含 Book
的所有实体的列表,没有被用户删除的实体。
当 ModelMapper
将 UpdateDTO
映射到实体 Library
时,我希望该集合缺少用户删除的实体 Book
。但与我的预期不同,返回的实体 Library
仍然包含所有 Book
个实体。
这是为什么? 我已将 'problem' 固定到 CollectionConverter
[0].
中的这些行
ModelMapper
的存储库包含一个关于同一问题的问题 [0],解释了当前实现的工作原理和代码,因此 ModelMapper
如果源大小小于目标尺寸。
默认情况下合并列表为真,但您可以将其关闭:
ModelMapper mapper = new ModelMapper();
mapper.getConfiguration().setCollectionsMergeEnabled(false);
在我的应用程序中,我使用 ModelMapper 库将数据传输对象映射到实体。
一个实体 Library
有一个包含其他实体 Book
的集合 (java.util.Set
)。
用户应该能够更改集合内容。
在这种情况下,使用了一个数据传输对象 UpdateDTO
,其中包含要存储在集合中的实体 Book
的标识符。
后端使用 ModelMapper
.
UpdateDTO
映射到实体 Library
现在假设用户从 Library
的集合中删除实体 Book
。 UpdateDTO
现在包含 Book
的所有实体的列表,没有被用户删除的实体。
当 ModelMapper
将 UpdateDTO
映射到实体 Library
时,我希望该集合缺少用户删除的实体 Book
。但与我的预期不同,返回的实体 Library
仍然包含所有 Book
个实体。
这是为什么? 我已将 'problem' 固定到 CollectionConverter
[0].
ModelMapper
的存储库包含一个关于同一问题的问题 [0],解释了当前实现的工作原理和代码,因此 ModelMapper
如果源大小小于目标尺寸。
默认情况下合并列表为真,但您可以将其关闭:
ModelMapper mapper = new ModelMapper();
mapper.getConfiguration().setCollectionsMergeEnabled(false);