Spring Boot中Hibernate单表继承子类@Table注解报错修复咨询
修复Hibernate单表继承子类的@Table注解错误
错误原因很明确:在**单表继承(SINGLE_TABLE)**的层级结构中,子类不能标注@Table注解——整个继承树的表映射已经由根实体类Account声明完成,子类无需重复指定表名。
最小改动方案:直接删除CustomerAccount类上的@Table(name = "accounts")注解,保留@Entity即可。
修改后的代码如下:
根实体类Account(无改动)
@Entity @Table(name = "accounts") @Inheritance(strategy = InheritanceType.SINGLE_TABLE) public class Account { @Id @Column(name = "id") private UUID id; // 其他字段、构造方法及业务逻辑 }
子类CustomerAccount(修改后)
@Entity public class CustomerAccount extends Account { private String address; // 其他字段、构造方法及业务逻辑 }
补充说明:单表继承模式下,所有子类的字段都会存储在根类指定的accounts表中,Hibernate会自动通过DTYPE列(可通过@DiscriminatorColumn自定义列名和类型)区分不同的实体类型,因此子类不需要再配置表映射。
内容的提问来源于stack exchange,提问作者Peter Penzov
相关产品推荐
相关产品推荐

