使用JPA Buddy从POJO生成JPA Entity时忽略@MappedSuperClass父类定义
针对你遇到的场景(IntelliJ IDEA Ultimate 2023.2.3 + JPA Buddy 2023.3.5-232 + Spring Boot + PostgreSQL),可以按以下步骤排查修复:
校验父类注解有效性
确认父类的@MappedSuperclass注解导入正确:Spring Boot 3.x用jakarta.persistence.MappedSuperclass,Spring Boot 2.x用javax.persistence.MappedSuperclass;同时父类不要加final修饰符,避免子类无法继承。手动指定父类生成
在「JPA Entity from POJO」的生成弹窗里,不要依赖插件自动识别,直接在父类选择下拉框中手动选中你的@MappedSuperclass父类。如果下拉框里找不到该类,检查父类是否在项目主源码目录(非test或外部依赖),并等待IDEA完成索引更新。生成后手动补全继承(临时方案)
如果插件仍不识别,先生成基础Entity类,再手动添加父类继承声明。若父类字段需要调整映射规则,可在子类上用@AttributeOverrides注解覆盖配置。适配插件与IDEA版本
当前JPA Buddy版本(2023.3.5-232)是适配IDEA 2023.3.x的,和你的IDEA 2023.2.3存在版本不匹配问题。可以降级JPA Buddy到2023.2.x系列版本,或者升级IDEA到2023.3.x后再测试功能。清理IDEA缓存
执行File -> Invalidate Caches... -> Invalidate and Restart,清除索引缓存后重新打开项目,避免缓存异常导致插件无法识别注解。
内容的提问来源于stack exchange,提问作者michelinovic

