JHipster:为User实体添加字段实现带额外信息的用户注册
首先得说清楚,感谢Paul Etienne之前提供的问答思路!下面我基于2018年3月17日的JHipster最新版本,给你详细拆解怎么给User实体加新字段:
如何在JHipster项目中为User实体添加新的数据字段
一、修改后端实体类
找到项目里的src/main/java/[你的包名]/domain/User.java,直接在类里新增字段,比如我要加个手机号phoneNumber:
@Column(name = "phone_number") private String phoneNumber; // 别忘了生成对应的getter和setter方法 public String getPhoneNumber() { return phoneNumber; } public void setPhoneNumber(String phoneNumber) { this.phoneNumber = phoneNumber; }
二、更新数据库表结构
JHipster自带Liquibase来管理数据库版本,用它来生成变更日志最方便:
- Maven项目执行:
./mvnw liquibase:diff - Gradle项目执行:
./gradlew liquibaseDiffChangelog - 生成的变更文件会在
src/main/resources/config/liquibase/changelog目录下,检查没问题后,执行更新命令:./mvnw liquibase:update(Maven)或./gradlew liquibaseUpdate(Gradle),这样数据库里的user表就会新增对应的字段了。
三、调整前端代码
1. 确保后端接口返回新字段
检查src/main/java/[你的包名]/web/rest/UserResource.java里的接口,比如getUser()或者updateUser这些方法,要保证返回的对象包含新字段——如果用了DTO,就得给DTO也加上对应字段和映射;如果直接返回User实体,那只要实体加了字段就没问题。
2. 更新前端页面组件
以Angular项目为例,找到用户管理相关的组件:
- 详情页:
src/main/webapp/app/admin/user-management/user-management-detail.component.html,加一段显示新字段的代码:
<div class="form-group"> <label class="form-control-label" jhiTranslate="userManagement.phoneNumber">手机号</label> <p class="form-control">{{user.phoneNumber}}</p> </div>
- 编辑/创建页:
src/main/webapp/app/admin/user-management/user-management-edit.component.html,加输入框:
<div class="form-group"> <label class="form-control-label" jhiTranslate="userManagement.phoneNumber">手机号</label> <input type="text" class="form-control" id="phoneNumber" name="phoneNumber" [(ngModel)]="user.phoneNumber"/> </div>
3. 补充国际化翻译
去src/main/webapp/i18n/en/user-management.json和中文对应的zh-cn/user-management.json里加翻译项,比如英文里加:
{ "phoneNumber": "Phone Number" }
中文里加:
{ "phoneNumber": "手机号" }
四、测试验证
最后启动前后端服务,去用户管理页面试试:
- 查看用户详情,确认新字段显示正常
- 编辑或创建用户,输入新字段内容,提交后检查数据库里是否正确保存
内容的提问来源于stack exchange,提问作者AliReza
相关产品推荐
相关产品推荐

