2016-12-12 26 views
3

我對JHipster比較陌生。Jhipster - 與另一個字段(不是id)的關係(加入)

使用JHipster 3.12.1生成該應用

我有以下JDL文件:

entity Country { 
    countryCd String minlength(2) maxlength(2) required, 
    countryNm String maxlength(64) required 
} 

entity State{ 
    stateCd String minlength(2) maxlength(2) required, 
    stateNm String maxlength(40) , 
    stateTypeCd String maxlength(1) required 
} 

entity ZipCode{ 
    zipCd String maxlength(20) required 
} 

entity ZipCodeGeoBrg{ 
    countryCd String minlength(2) maxlength(2) required, 
    zipCd String maxlength(20) required, 
    cityNm String maxlength(100) required, 
    stateCd String minlength(2) maxlength(2) required, 
    countyNm String maxlength(100) , 
    countyCd String maxlength(20) , 
    communityNm String maxlength(100) , 
    communityCd String maxlength(20) , 
    latitudeNum BigDecimal , 
    longitudeNum BigDecimal, 
    accuracyNum Integer 
} 

relationship OneToMany { 
    ZipCode{zipCodeGeoBrg} to ZipCodeGeoBrg{zipCode(zipCd)}, 
    Country{zipCodeGeoBrg(countryCd)} to ZipCodeGeoBrg{country(countryCd)}, 
    State{zipCodeGeoBrg(stateCd)} to ZipCodeGeoBrg{state(stateCd)} 
} 

dto * with mapstruct 

service all with serviceImpl 
search ZipCodeGeoBrg with elasticsearch 

的JDL文檔狀態:

默認情況下,加入是由id字段完成的......但是如果你想讓加入由另一個字段完成,那麼你可以做些事情E:

實體A { 名稱需要字符串 } 實體B

關係OneToOne { A {B}到B {A(名稱)} }

生成的類( ZipCodeGeoBrg)具有以下屬性:

@ManyToOne 
private ZipCode zipCode; 

@ManyToOne 
private Country country; 

@ManyToOne 
private State state; 

我的實體類已生成,但所有j oins位於id列上,而不是命名列(例如, countryCd)。我希望這樣的事情:

@ManyToOne 
@JoinColumn(name = "COUNTRY_CD") 
private Country country; 

@ManyToOne 
@JoinColumn(name = "STATE_CD") 
private State state; 

@ManyToOne 
@JoinColumn(name = "ZIP_CD") 
private ZipCode zipCode; 

我已經試過了JDL這樣太:

relationship OneToMany { 
    ZipCode to ZipCodeGeoBrg{zipCode(zipCd)}, 
    Country to ZipCodeGeoBrg{country(countryCd)}, 
    State to ZipCodeGeoBrg{state(stateCd)} 
} 

,並得到了相同的結果。

這是一個現有的數據庫。 DBA願意更新表格並添加一個ID列,但不願意重做所有關係(例如,zip_cd是與ZipCode < - > ZipCodeGeoBrg相關的現有列,並且這不會改變)。所以我必須使這些工作與不是ID的列一起工作。我知道我可以在生成後手動更新實體,但我還有20個表要做,並且寧願讓該工具爲我做。

我錯過了什麼?

回答

1

該文檔已更新,因爲它現在讀取:

的加入使用ID字段,這也是編輯在前端的關係時所顯示的默認領域一直在做。如果另一場應改爲顯示,你可以像這樣指定它:

entity A { 
    name String required 
} 

entity B 
relationship OneToOne { 
    A{b} to B{a(name)} 
} 

我的理解,如果記號是不是真的改變連接字段但在生成UI改變顯示領域。

所以你想做的事可能不會讓JHipster去做,但你總是可以修改生成的代碼來適應你的目的。

相關問題