【发布时间】:2021-02-24 19:19:17
【问题描述】:
我是 MapStruct 的新手。
我有一个 Word 对象,它包含一个字符串值和一组自身,我想将它映射到包含一个值和一组字符串值的 WordDTO。我不知道该怎么做。
正如我在 cmets 中所说,mapstruct 无法映射两个对象是有道理的,但如果它有帮助,我将错误放在下面:
Error:(20,13) java: Can't map property "java.util.Set<Word> synonyms" to "java.util.Set<java.lang.String> synonyms". Consider to declare/implement a mapping method: "java.util.Set<java.lang.String> map(java.util.Set<Word> value)"
词类:
public class Word {
private String wordValue;
private Set<Word> synonyms;
}
WordDTO 类:
public class WordDTO {
private String wordValue;
private Set<String> synonyms;
}
(其实是设置或列出...根本无所谓。)
我为映射实现了这个接口:
@Mapper
public interface WordMapper {
WordMapper INSTANCE= Mappers.getMapper(WordMapper.class);
WordDTO wordToWordDTO(Word word);
Word wordDTOToWord(WordDTO wordDTO);
}
感谢您的帮助。
【问题讨论】:
-
synonyms.stream().map(Word::getWordValue).collect(Collectors.toSet())呢? -
@NikolaiDmitriev MapStruct 是一个代码生成器,用于在 Java 中创建高效、类型安全的 bean-to-bean 映射。
-
使用映射器时遇到什么错误?
-
@dan1st 这绝对正确......但由于某些原因,我希望 mapstruct 在编译时生成此代码。问题是我不知道我应该把它放在哪里。也许像客户生成器之类的东西?
-
@JohnMercier 我们无法将对象映射到字符串是有道理的。//错误//错误:(20,13)java:无法映射属性“java.util.Set 同义词”到“java.util.Set
同义词”。考虑声明/实现一个映射方法:“java.util.Set map(java.util.Set value)”。
标签: java spring spring-boot spring-mvc mapstruct