将对象集映射到字符串集
Map Set of objects to Set of strings
我是 MapStruct 的新手。
我有一个包含字符串值和一组自身的 Word 对象,我想将它映射到包含一个值和一组字符串值的 WordDTO。我不知道该怎么做。
正如我在评论中所说,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)"
单词class:
public class Word {
private String wordValue;
private Set<Word> synonyms;
}
WordDTO class:
public class WordDTO {
private String wordValue;
private Set<String> synonyms;
}
(其实是set还是list...根本没关系。)
我为映射实现了这个接口:
@Mapper
public interface WordMapper {
WordMapper INSTANCE= Mappers.getMapper(WordMapper.class);
WordDTO wordToWordDTO(Word word);
Word wordDTOToWord(WordDTO wordDTO);
}
感谢您的帮助。
Mapstruct 抱怨他无法将 Word
转换为 String
。你必须明确地告诉映射器如何去做。
这是一个例子:
@Mapper
public interface WordMapper {
WordMapper INSTANCE= Mappers.getMapper(WordMapper.class);
WordDTO wordToWordDTO(Word word);
Word wordDTOToWord(WordDTO wordDTO);
// Map String to Word
@Mapping(source = "value", target = "wordValue")
Word stringToWord(String value)
// Map Word to string
default String wordToString(Word word) {
return (word == null) ? null : word.getWordValue();
}
}
我是 MapStruct 的新手。
我有一个包含字符串值和一组自身的 Word 对象,我想将它映射到包含一个值和一组字符串值的 WordDTO。我不知道该怎么做。
正如我在评论中所说,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)"
单词class:
public class Word {
private String wordValue;
private Set<Word> synonyms;
}
WordDTO class:
public class WordDTO {
private String wordValue;
private Set<String> synonyms;
}
(其实是set还是list...根本没关系。)
我为映射实现了这个接口:
@Mapper
public interface WordMapper {
WordMapper INSTANCE= Mappers.getMapper(WordMapper.class);
WordDTO wordToWordDTO(Word word);
Word wordDTOToWord(WordDTO wordDTO);
}
感谢您的帮助。
Mapstruct 抱怨他无法将 Word
转换为 String
。你必须明确地告诉映射器如何去做。
这是一个例子:
@Mapper
public interface WordMapper {
WordMapper INSTANCE= Mappers.getMapper(WordMapper.class);
WordDTO wordToWordDTO(Word word);
Word wordDTOToWord(WordDTO wordDTO);
// Map String to Word
@Mapping(source = "value", target = "wordValue")
Word stringToWord(String value)
// Map Word to string
default String wordToString(Word word) {
return (word == null) ? null : word.getWordValue();
}
}