如何创建两个具有不同注释的映射方法

How to create two mapping methods with different anotations

我创建了这个映射方法:

  public abstract User map(UserDTO user);

  @Mapping(source = "user.roles", target = "rolesIds")
  public abstract UserDTO mapWithRoles(User user, boolean roles);

如您所见,这两种方法具有相同的签名,当涉及到其他实体中的隐式映射时,这会导致错误。我现在通过将 "roles" 参数添加到第二种方法来解决它,该方法仅用于制作不同的方法签名。

问题是我在存储库上有两种获取用户的方法,一种有权限,一种没有权限,我需要将加载的权限映射到 DTO 上的 permissionIds。

如何制作两种标注不同但签名相同的映射方法?

根据哪种方法应该是您的默认方法,您应该使用 @Named 或自定义 @Qualifier 注释其中之一。如果是这种情况,将不会考虑带注释的方法,只有在 @Mapper#qualifiedBy@Mapper#qualifiedByName.

中明确使用时才会考虑它

有关详细信息,请参阅参考文档here