必须同步修改字段定义、JPA注解(如@Column)、Lombok/序列化配置(如@JsonProperty)三处,否则将引发编译失败或Hibernate映射异常。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

在 Atoms 代码生成器(如基于 JPA + FreeMarker 模板的后端代码生成工具)中,实体类被生成后若需手动修改字段、注解或关系映射,必须同步处理三处关键位置,否则会导致编译失败或运行时 Hibernate 映射异常。
确认生成代码归属与可编辑范围
打开项目中 src/main/java 下对应包路径(例如 com.example.domain),找到以 Entity 结尾的类(如 UserEntity.java)。该类若由 Atoms 工具生成且文件头含 // GENERATED BY ATOMS — DO NOT EDIT 注释,则不可直接修改;若无此注释,说明已脱离模板管控,允许人工调整。
检查 pom.xml 或构建脚本中是否启用 atoms:generate 的增量模式(overwrite=false)。若为 true,后续重新生成会直接覆盖你的修改——【务必先将 overwrite 设为 false】。
修改实体类字段与 JPA 注解
方法一:增删普通字段
在类中添加新字段(如 private String nickName;),紧接着在其上方添加标准 JPA 注解:@Column(name = "nick_name", length = 50)。注意字段名与数据库列名不一致时必须显式声明 name 属性,否则 Hibernate 默认按驼峰转下划线规则映射,可能找不到列。
方法二:调整主键策略
若原用 @GeneratedValue(strategy = GenerationType.IDENTITY),现需改为 UUID,需替换为:@Id @GeneratedValue(generator = "uuid2") @GenericGenerator(name = "uuid2", strategy = "org.hibernate.id.UUIDGenerator") private String id;。这一步必须同时引入 hibernate-core 5.4+ 依赖,低版本不支持 UUIDGenerator 类。
方法三:修改一对多关联
找到 @OneToMany 关联字段,把 mappedBy = "user_id" 改为实际对方实体中的属性名(如 mappedBy = "user"),并确保对方实体中存在类型为当前类、名称匹配的字段。若漏改对方实体字段名,启动时会抛 org.hibernate.AnnotationException。
同步更新 Lombok 与序列化配置
第一步:检查类顶部是否有 @Data 或 @NoArgsConstructor @AllArgsConstructor @ToString 等 Lombok 注解。新增字段后,若使用 @Data,Lombok 会自动包含新字段的 getter/setter/toString;但若只用了 @Getter @Setter,需手动补全新字段的 setter 方法,否则 MyBatis-Plus 或 JSON 反序列化时会因缺少 setter 报错。
第二步:若该实体被用于 HTTP 接口返回(如 Spring MVC 的 @ResponseBody),检查是否加了 @JsonIgnoreProperties({"hibernateLazyInitializer", "handler"})。若新增字段是延迟加载的集合(如 @OneToMany(fetch = FetchType.LAZY)),不加该注解会导致 Jackson 序列化时触发代理初始化,抛出 LazyInitializationException。
第三步:在字段上添加 @JsonProperty("nick_name")(来自 com.fasterxml.jackson.annotation),确保 JSON 键名与数据库列名风格统一;若不加,默认使用 Java 字段名(nickName),前端可能无法识别。


















