gpt4 book ai didi

Mapstruct - 将 customModel 映射到它的字符串表示

转载 作者:行者123 更新时间:2023-12-04 08:38:48 26 4
gpt4 key购买 nike

我有以下结构

Public void Student(){
private string name;
private int age;
}


Public void Class(){
private string roomNo;
private Student student; //Student Object
}

Public void School(){
private string roomNo;
private String student; //String student
}
我正在尝试使用 map struct 映射这些
@Mapping(source = "java(student.toString())", target = "student")
School mapClassToSchool(@NonNull Class class);
我收到以下错误
error: No property named "java(student.toString())" exists in source parameter(s). Did you mean "student"?
[javac] @Mapping(source = "java(student.toString())", target = "student")
[javac] ^
我试图通过这个 https://mapstruct.org/documentation/stable/reference/html/但我的用例不能简单的例子
何做我 map student到其 string表示
编辑:1
有没有可能做
@Mapping(expression = new GSON().toJson(clazz.getStudent()), target = "student")
School mapClassToSchool(@NonNull Class class);

最佳答案

如果你想使用表达式,那么你必须使用 Mapping#expression .无论您在表达式中定义什么,它都会在生成的代码中一对一设置。
例如

@Mapping(expression = "java(clazz.getStudent().toString())", target = "student")
School mapClassToSchool(@NonNull Class clazz);
另一种选择是在 Student 之间定义映射方法。和 String ,那么您就不需要定义自定义 @Mapping为学生。
例如
School mapClassToSchool(@NonNull Class clazz);

default String mapStudentToString(Student student) {
return student != null ? student.toString() : null;
}

请注意, class是 Java 保留字。
  • 这不会编译:School mapClassToSchool(@NonNull Class class) .
  • 使用 clazz相反:School mapClassToSchool(@NonNull Class clazz) .
  • 关于Mapstruct - 将 customModel 映射到它的字符串表示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64662558/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com