Генерируемый JDL метод получения объектов, связанных с OneToMany, в DTO - PullRequest
0 голосов
/ 16 февраля 2019

Я использую 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?

...