Я использую JDL (JHipster 5.8.1), чтобы определить мою модель домена с опцией DTO:
entity Event {
title String maxlength(128) required,
bannerUrl String maxlength(256) required,
summary String maxlength(256) required
}
entity Tag {
name String maxlength(64) required
}
entity Team {
title String maxlength(128) required,
description TextBlob
}
relationship ManyToMany {
Event{tags} to Tag{events}
}
relationship OneToMany {
Event{teams} to Team{event required}
}
relationship ManyToOne {
Event{city} to City{events}
}
dto * with mapstruct
Я попытался определить События, которые содержат несколько повторно используемых тегов и несколько команд.Цель состоит в том, чтобы заставить API генерировать составной JSON, который содержит все теги и все команды внутри запрашиваемого события (чтобы избежать проблемы N + 1 в REST)
Я ожидал получить двунаправленные отношения между тегом <-> Event и Team <-> Событие.Для отношений ManyToMany это правда: я вижу геттер для TagDTO внутри EventDTO.Но для OneToMany (также ManyToOne) я не вижу получателя внутри EventDTO и получателя события EventId внутри команды:
public class EventDTO implements Serializable {
private Long id;
@NotNull
@Size(max = 128)
private String title;
@NotNull
@Size(max = 256)
private String bannerUrl;
@NotNull
@Size(max = 256)
private String summary;
private Long cityId;
private Set<TagDTO> tags = new HashSet<>();
Код, сгенерированный без строки dto * with mapstruct
, выдает ожидаемый JSON со всеми дочерними объектами, если eagerload =правда, но такой подход может вызвать проблемы с безопасностью.
Можно ли исправить мой JDL для создания DTO, подобных childEntity, но не DTO, подобных childId?