JHipster中使用JDL配置实体关联,指定clientId为外键
解决JHipster JDL中外键字段不使用自定义clientId的问题
问题原因
你在AuthToken和ClientProfile实体中手动定义了clientId字段,同时通过JDL的relationship配置了关联关系。JHipster默认会自动生成关联外键字段(比如auth_client_id),导致你自定义的clientId仅作为普通字段存在,没有被用作外键。
解决方案
移除实体中手动定义的clientId,在关系配置中指定外键列名为clientId,让JHipster自动生成对应外键并关联到AuthClient。
修改后的完整JDL代码
entity AuthClient(auth_client) { msisdn String required maxlength(255), email String required unique maxlength(255), password String required maxlength(255), lastLogin Instant, createdAt Instant required, createdBy Integer, updatedAt Instant, updatedBy Integer, isDeleted Boolean required, deletedAt Instant, deletedBy Integer } entity AuthToken(auth_token) { token String required maxlength(255), appId Integer required, appVersionName String maxlength(255) } entity ClientProfile(client_profile) { fName String required maxlength(255), mName String maxlength(255), lName String required maxlength(255), gender Integer } // Relations relationship OneToMany { AuthClient{authTokens} to AuthToken{authClient(clientId)} } relationship OneToOne{ ClientProfile{authClient} to AuthClient{clientProfile(clientId)}, } // Options service * with serviceClass paginate * with pagination dto * with mapstruct filter *
关键说明
- 移除
AuthToken和ClientProfile中的clientId字段,避免和JHipster自动生成的外键冲突 - 在关系定义的右侧实体后添加
(clientId),例如AuthToken{authClient(clientId)},这会告诉JHipster将外键列名设为clientId(数据库中会自动转换为下划线命名的client_id,符合JHipster的命名规范) - 重新生成代码后,数据库中就会使用
client_id作为关联AuthClient的外键,而非自动生成的auth_client_id
内容的提问来源于stack exchange,提问作者mulikevs
相关产品推荐
相关产品推荐

