JHipster中JDL配置UUID导致网关编译报cannot find symbol错误如何解决
问题根因
你的JDL配置存在两处不符合JHipster规范的写法,导致生成的代码缺少UUID类的导入声明,触发编译失败:
- 不支持单个实体单独指定主键类型:JHipster要求同一应用下所有实体的主键类型统一,不支持在单个实体的字段列表中单独定义
id UUID来修改主键类型。主键类型必须在应用的config块中通过idType参数全局配置。你单独为Staff实体指定UUID主键的写法不符合规范,导致生成器处理OneToMany关联时,没有自动在Practice类中导入java.util.UUID包,触发找不到类的错误。 - 缺少全局主键类型配置:你的应用没有配置全局主键类型,生成器默认会使用Long作为主键类型,遇到你自定义的Staff主键类型时关联逻辑处理异常。
修复方案
修改你的JDL配置,调整如下:
- 在application的config块中新增
idType UUID配置,声明整个应用的主键类型为UUID - 删除Staff实体中自定义的
id UUID字段,JHipster会自动根据全局配置生成对应类型的主键字段
修改后的JDL样例:
application { config { baseName gateway applicationType gateway packageName com.my authenticationType jwt reactive false clientFramework react buildTool gradle serverPort 8080 idType UUID # 新增全局主键类型声明 } entities * } entity Practice { practiceName String address1 String address2 String city String state String zip String } entity Staff { jobtitle String # 移除自定义的id UUID行 } relationship OneToMany { Staff to Practice{staff} }
修改后重新生成代码即可正常编译。
内容的提问来源于stack exchange,提问作者Vanessa S.
相关产品推荐
相关产品推荐

