【问题标题】:Map Set of objects to Set of strings将对象集映射到字符串集
【发布时间】: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


【解决方案1】:

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();
    }
   
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-29
    • 2019-01-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多