Jhipster - 与另一个领域(不是id)的关系(加入)

时间:2016-12-12 23:03:57

标签: jhipster

我对JHipster来说比较新。

  

此应用程序是使用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字段完成的......但是如果你想让加入由另一个字段完成,那么你可以做以下事情:

     

实体A {          name需要的字符串      }      实体B

     

关系OneToOne {          A {b}到B {a(name)}      }

生成的类(ZipCodeGeoBrg)具有以下属性:

@ManyToOne
private ZipCode zipCode;

@ManyToOne
private Country country;

@ManyToOne
private State state;

我的实体类已生成,但所有连接都在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 个答案:

答案 0 :(得分:4)

文档已更新,现在显示为:

  

连接总是使用id字段完成,id字段也是在前端编辑关系时显示的默认字段。如果应该显示另一个字段,您可以像这样指定它:

entity A {
   name String required
 }

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

我理解这个符号并不是真的用于更改连接字段,而是用于更改生成的UI中的显示字段。

所以你想要做的就是不可能让JHipster去做,但你总是可以修改生成的代码以适合你的目的。