Допустим, вы создаете приложение JHipster для блога с сообщениями, используя сценарий JDL, подобный этому, и хотите иметь BlogDTO, который показывает сообщения внутри него (и BlogDTO, который показывает комментарии, которые есть у каждого сообщения):
entity Blog {
creationDate Instant required
title String minlength(2) maxlength(100) required
}
entity Post {
creationDate Instant required
headline String minlength(2) maxlength(100) required
bodytext String minlength(2) maxlength(1000) required
image ImageBlob
}
entity Comment {
creationDate Instant required
commentText String minlength(2) maxlength(1000) required
}
// RELATIONSHIPS:
relationship OneToMany {
Blog to Post{blog required}
Post{comment} to Comment{post(headline) required}
}
// Set pagination options
paginate all with pagination
// DTOs for all
dto * with mapstruct
// Set service options to all except few
service all with serviceClass
// Filtering
filter *
Jhipster создаст объекты вашего блога, публикации и комментария с их DTO и сделает предположение, что вы не хотите заполнять блог сообщениями или сообщения комментариями, поэтому ваш BlogMapper будет выглядеть следующим образом:
@Mapper(componentModel = "spring", uses = {})
public interface BlogMapper extends EntityMapper<BlogDTO, Blog> {
@Mapping(target = "posts", ignore = true)
Blog toEntity(BlogDTO blogDTO);
default Blog fromId(Long id) {
if (id == null) {
return null;
}
Blog blog = new Blog();
blog.setId(id);
return blog;
}
}
с BlogDTO следующим образом:
public class BlogDTO implements Serializable {
private Long id;
@NotNull
private Instant creationDate;
@NotNull
@Size(min = 2, max = 100)
private String title;
//GETTERS, SETTERS, HASHCODE, EQUALS & TOSTRING
Может ли кто-нибудь помочь изменить код, чтобы BlogDTO отображал сообщения (а PostDTO отображал комментарии). Спасибо
ПД: потому что я изменил аннотацию, включив в нее класс PostMapper @Mapper(componentModel = "spring", uses = {PostMapper.class})
И @Mapping(target = "posts", ignore = false) в FALSE, но это не работает. Пример API (Swagger) выглядит нормально, но PostDTO имеет значение null (даже если данные есть).