2017-08-23 74 views
1

客戶端模型當我們與他們之間的不同關係的幾個實體(如: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() {} 
} 

隨着打字稿,我們將高度受益於輸入這個代碼,所以我們可以對象之間導航,如:

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

引入BaseEntity(這是我自己)的原始原因是在Typescript中避免循環引用。 構建過程非常漫長,有時在兩個實體之間存在關聯時導致實體模型相互導入。這是我當時可以找到的避免循環參考的快速解決方案。

注意:這是在一段時間之前完成的,也許問題不再存在與最新的Typescript和Webpack,因此可能會重新訪問。