tout d'abord est Source
contient toujours un cours pourquoi ne pas en faire un élément Course
au lieu d'un List
?
Si vous faites cela, la cartographie serait beaucoup plus simple. Avec votre configuration actuelle, c'est un peu plus complexe.
@Mapper
public interface MyMapper {
@Mapping(target = "targetId", source = "sourceId")
@Mapping(target = "subjectName", source = "courses")
@Mapping(target = "members", source = "courses")
Target map(Source source);
default String subjectName(List<Course> courses) {
if (courses == null || courses.isEmpty()) {
return null;
}
return courses.get(0).getCourseName();
}
default List<Member> toMembersFromCourses(List<Course> courses) {
if (courses == null || courses.isEmpty()) {
return null;
}
return toMembers(courses.get(0).getStudents());
}
List<Member> toMembers(List<Student> students);
@Mapping(target = "memberName", source = "studentName")
Member toMember(Student student);
}
Si Course
n'est pas une liste. alors vous pouvez le faire plus élégant avec 1.2.0.Final.
@Mapper
public interface MyMapper {
@Mapping(target = "targetId", source = "sourceId")
@Mapping(target = "subjectName", source = "course.courseName")
@Mapping(target = "members", source = "course.students")
Target map(Source source);
@Mapping(target = "memberName", source = "studentName")
Member toMember(Student student);
}
Merci pour la réponse détaillée. Pourquoi le cours est la liste? C'est l'exigence. Aussi pouvez-vous mettre à jour la réponse avec le code source correct pour la classe de mappeur. Liste des membres renvoyés à la place de la liste des étudiants pour la première méthode toMembers(). –
Je ne pense pas que je suis. Le code source renvoie une 'Liste' –
Filip
Je reçois des erreurs de temps de compilation avec le code ci-dessus. –