java - 将对象集映射到字符串集
问题描述
我是 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)"
词类:
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);
}
谢谢你的帮助。
解决方案
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();
}
}
推荐阅读
- xamarin.forms - 如果我的 Xamarin Forms Android 只有一个图标,是否需要创建启动画面?
- json - 我怎样才能把这个“\/\/cdn.apixu.com\/weather\/64x64\/day\/116.png”放在一个字符串里面,我对“\/\/”有问题
- android - 下载管理器:状态 HTTP 数据错误:无法从移动设备 IP 地址 android 连接到 Web 服务器
- python - 合并/加入 Pandas 数据框
- javascript - 具有嵌套表连接的 Knex 查询
- c - 用字符串复制到链表不起作用
- excel - 火花驱动器意外停止并正在重新启动。您的笔记本将自动重新附加
- openai-gym - 宇宙中的observation_n到底是什么?
- docker - 为什么 docker-compose.yml 中的特殊字符会被忽略?
- javascript - 当用户使用 JavaScript 离开菜单时关闭弹出菜单