我有两个类实体的父子关系:
public class Parent {
private String name;
private List<Child> children;
}
public class Child {
private String name;
}
我需要两个Map器更新方法,一个完全替换集合,另一个向集合添加新元素。
@Mapper(
componentModel = "spring",
uses = {ChildMapper.class})
public interface ParentMapper {
Parent updateParent(ParentTo to, @MappingTarget Parent parent); //works correctly
Parent updateParentAddChild(ParentTo to, @MappingTarget Parent parent); //it does not work correctly
}
默认情况下,更新时,Map器将替换集合中的所有实体。
在Map器中通过向工作表中添加元素来实现实体更新,如何才能更正确?
1条答案
按热度按时间xqkwcwgp1#
它们都能正常工作,但是它们做了同样的事情。您只更改了名称,这就是实现保持不变的原因。
“完全替换”是一种常见的行为,所以为了完全替换集合,你已经做了什么就可以了。
相反,如果您需要特定的实现(比如通过添加新元素来更新集合),您可以简单地使用自定义实现创建一个方法:
如果需要,还可以应用一个名为ADDER_PREFERRED的CollectionMappingStrategy来覆盖默认行为。
您可以在Baeldung上找到更多相关信息:集合Map策略