我正在使用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/