java - 发现映射属性不明确的映射方法(java.util.Map 和 java.util.Object)

标签 java class object dto mapstruct

我正在使用mapstruct从一个DTO映射到另一个DTO。我有多个默认方法,但其中 2 个返回值为 String 并且使用相同的类作为输入参数,这给我带来了“使用 java Mapstruct 的模糊映射方法”错误。

<小时/>
public class Action implements Serializable {

    [...]

    private String statusHistory;

    [...]

    private String propertiesOriginal;
    private String propertiesEdited;

    // Setter, Getter, ecc..
}
<小时/>
public class ActionDTO implements Serializable {

    ...
    private Map<String, Integer> statusHistory  = new HashMap<>();

    ...
    private Object propertiesOriginal;
    private Object propertiesEdited;

    // Setter, Getter, ecc..
}
<小时/>
@Mapper(componentModel = "spring", uses = {})
public interface ActionMapper extends EntityMapper<ActionDTO, Action> {

    default Map toMap(String text) throws IOException {
        Map map = new HashMap();
        try{
            map = new ObjectMapper().readValue(text, new TypeReference<Map<String, Integer>>(){});
        } catch (IOException e){
            e.printStackTrace();
        }
        return map;
    }

    default String fromMap(Map map){
        return new JSONObject(map).toString();
    }

[...]

    default Object toObject(String text) throws IOException {
        return new ObjectMapper().readValue(text, Object.class);
    }

    default String fromObject(Object object) throws IOException {
        return new ObjectMapper().convertValue(object, String.class);
    }
[...]
}
<小时/>

Error:(16, 7) java: Ambiguous mapping methods found for mapping property "java.lang.String statusHistory" to java.util.Map: java.util.Map toMap(java.lang.String text), java.lang.Object toObject(java.lang.String text).

最佳答案

这两种方法都限定对象和映射。但是,您可以选择要使用的正确结果类型。看看@BeanMapping#resultType .

关于java - 发现映射属性不明确的映射方法(java.util.Map 和 java.util.Object),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57359945/

相关文章:

java - 更改 Edittext 后更新 Seekbar

java - 非二叉树中特定级别的子节点数

java - 方法的返回值

c# - 遍历包含变量的类

Javascript 将数据从一个对象分配给另一个对象会添加重复项

java - 将一个对象复制到另一个对象在 java 中产生不同的结果

java - TextView + 变量

c++ - 全局变量的最佳实现

javascript - 从 Node.js 中的 Array 对象中删除特定属性

object - 有没有办法获得场景中的多边形数量?