Hello,
I am trying to setup a Bean to back a view which has nested mappings and a list.
Person to the top object
Person has a list of Comments
Comments has a property User
User has a Property Organisation
public class PersonViewModel {
public PersonViewModel() {}
private Long id;
private String surname;
private String middlename;
private String firstname;
private String address;
private Date dob;
private List<CommentViewModel> comments = new ArrayList<>();
public class CommentViewModel {
public CommentViewModel(){}
private Long id;
private Date commentDate;
private String comment;
private UserViewModel user;
public class UserViewModel {
public UserViewModel(){}
private Integer id;
private String firstname;
private String surname;
private String email;
private String organisation;
public class OrganisationViewModel {
public OrganisationViewModel(){}
private String name;
So I have DTO's for each of those objects setup.
I also have mapper classes for each object:
@Mapper
public interface PersonMapper {
PersonMapper INSTANCE = Mappers.getMapper( PersonMapper.class );
@Mappings({
@Mapping(source = "person.address.formattedAddress", target = "address")
})
PersonViewModel PersonToAgencyCommentViewModel(Person person);
}
@Mapper
public interface CommentMapper {
CommentMapper INSTANCE = Mappers.getMapper( CommentMapper.class );
@Mapping(source = "user.organisation.name", target = "user.organisation")
List<CommentViewModel> CommentToAgencyCommentViewModel(List<Comment> comments);
}
@Mapper
public interface UserMapper {
UserMapper INSTANCE = Mappers.getMapper(UserMapper.class);
@Mapping(source = "organisation.name", target = "organisation")
UserViewModel UserToUserViewModel(User user);
}
@Mapper
public interface OrganisationMapper {
OrganisationMapper INSTANCE = Mappers.getMapper( OrganisationMapper.class );
OrganisationViewModel OrganisationToOrganisationViewModel(Organisations organisation);
}
Now when I try to use build the project there are some build errors:
src\main\java\com\example\mappers\PersonMapper.java:18: error: Can't map property "com.example.domain.Organisations comments[].user.organisation" to "java.lang.String comments[].user.organisation". Consider to declare/implement a mapping method: "java.lang.String map(com.example.domain.Organisations value)".
PersonViewModel PersonToCommentViewModel(Person person);
^
src\main\java\com\example\mappers\CommentMapper.java:16: error: No property named "
user.organisation.name" exists in source parameter(s). Did you mean "empty"?
^
src\main\java\com\example\mappers\CommentMapper.java:17: error: Can't map property "com.example.domain.Organisations comment.user.organisation" to "java.lang.String commentViewModel.user.organisation". Consider to declare/implement a mapping method: "java.lang.String map(com.example.domain.Organisations value)".
List<CommentViewModel> CommentToCommentViewModel(List<Comment> comments);
^
3 errors
What am I doing wrong?
Thanks
Al