当我们有几个具有不同关系的实体时(例如Event --1-> Venue --*-> Rooms
),JHipster为Java后端生成以下内容,这很好:
@Entity
public class Event implements Serializable {
@ManyToOne
private Venue venue;
}
@Entity
public class Venue implements Serializable {
@OneToMany(mappedBy = "venue")
private Set<Room> rooms = new HashSet<>();
}
@Entity
public class Room implements Serializable {
}
Angular中的等效模型不是强类型的。相反,当存在关系时,模型使用BaseEntity
:
export class Event implements BaseEntity {
constructor(public venue?: BaseEntity) {}
}
export class Venue implements BaseEntity {
constructor(public rooms?: BaseEntity[]) {}
}
export class Room implements BaseEntity {
constructor( ) {}
}
使用TypeScript,我们将非常有利于键入此代码,以便我们可以在对象之间导航,例如:
this.event.venue.rooms;
this.event.venue.rooms[0].name;
这将是生成没有BaseEntity
的模型类但是类本身的问题:
export class Event implements BaseEntity {
constructor(public venue?: Venue) {}
}
export class Venue implements BaseEntity {
constructor(public rooms?: Room[]) {}
}
export class Room implements BaseEntity {
constructor( ) {}
}
WDYT?有没有理由为什么Angular模型不像Java那样输入?
答案 0 :(得分:0)
引入BaseEntity(由我来)的原因是为了避免在Typescript中使用循环引用。 构建过程异常漫长,当两个实体彼此建立关系导致实体模型相互导入实体模型时,有时会崩溃。这是我当时可以找到的快速解决方案,以避免循环引用。
注意:这是在一段时间后完成的,也许问题不再存在,使用最新的Typescript和Webpack,所以可能会重新访问。