我正在使用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(以避免REST中的N + 1问题)
我希望在Tag <->事件和Team <->事件之间获得双向关系。对于ManyToMany关系,这是事实:我在EventDTO中看到TagDTO的吸气剂。但是对于OneToMany(也是ManyToOne)来说,我在EventDTO中看不到任何getter,在Team中看不到具有eventId getter:
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<>();
如果eagerload = true,则在没有dto * with mapstruct
行的情况下生成的代码会与所有子实体一起产生预期的JSON,但是此方法可能导致安全问题。
是否可以更正我的JDL以产生类似于childEntity的DTO,而不是类似于childId的DTO?