如何创建两个具有不同注释的映射方法
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
我创建了这个映射方法:
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