You need to enable JavaScript to run this app. JPA中@Embedded嵌入@Embeddable类时提示类型不允许报错的原因
优惠活动
大模型
产品
解决方案
定价
更多

JPA中@Embedded嵌入@Embeddable类时提示类型不允许报错的原因

触发「'Embedded' attribute type should not be 'Address'」报错的常见原因
  • 注解导入包不匹配
    这是最高发的触发场景:JPA 相关注解存在两套互不兼容的体系(旧版javax.persistence、3.0及以上版本jakarta.persistence),如果Address类上的@Embeddable和Order类字段上的@Embedded来自不同的注解体系,校验器无法识别类型的嵌入标记,就会判定Address不是合法的嵌入属性类型。
  • IDE校验缓存未同步
    如果你是先在Order类上写了带@Embedded的address字段,之后才给Address类补上@Embeddable注解,IDE的JPA元数据扫描缓存不会自动实时更新,会误将已经标记为可嵌入的Address判定为普通POJO,触发和实际代码逻辑无关的虚假报错。
  • 实体扫描配置范围缺失
    如果项目配置的@EntityScan、Persistence单元的扫描路径没有覆盖Address类所在的包范围,框架加载元数据时无法识别到Address类上的@Embeddable注解,只会将其视作普通Java类,自然无法匹配@Embedded的类型要求。
  • 编译生成的class文件元数据异常
    如果Address类上次编译时因为语法报错、依赖加载不全,生成的class文件没有正确写入@Embeddable的注解元数据,Order类引用时拿到的是缺少嵌入标记的旧版本类文件,就会触发校验报错。

内容的提问来源于stack exchange,提问作者OlSi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.11.01 16:15:04