MapStruct: Ambiguous mapping met
2022-07-13 本文已影响0人
CHMAX
一、问题场景
有两个方法实现不同的 domain 到 entity 对象的转换,也同时存在对应的集合转换的方法,大致代码如下:
@Mapper
public interface UserConverter {
List<UserEntity> toEntityOne(List<User> userList);
@Mappings({
// 方案一
...
})
UserEntity toEntityOne(User user);
List<UserEntity> toEntityTwo(List<User> userList);
@Mappings({
// 方案二
...
})
UserEntity toEntityTwo(User user);
}
编译时,会报 Ambiguous mapping methods found for mapping collection element 异常。
二、解决方案
对不同的转换方法添加标识,然后在集合方法上添加对应的引用,具体如下:
@Mapper
public interface UserConverter {
@IterableMapping(qualifiedByName = "one")
List<UserEntity> toEntityOne(List<User> userList);
@Named("one")
@Mappings({
// 方案一
...
})
UserEntity toEntityOne(User user);
@IterableMapping(qualifiedByName = "two")
List<UserEntity> toEntityTwo(List<User> userList);
@Named("two")
@Mappings({
// 方案二
...
})
UserEntity toEntityTwo(User user);
}