我对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个表要做,而且宁愿让工具为我做。
我错过了什么?
答案 0 :(得分:4)
文档已更新,现在显示为:
连接总是使用id字段完成,id字段也是在前端编辑关系时显示的默认字段。如果应该显示另一个字段,您可以像这样指定它:
entity A {
name String required
}
entity B
relationship OneToOne {
A{b} to B{a(name)}
}
我理解这个符号并不是真的用于更改连接字段,而是用于更改生成的UI中的显示字段。
所以你想要做的就是不可能让JHipster去做,但你总是可以修改生成的代码以适合你的目的。