Spring Boot+Hibernate实体映射报错:Agency实体'id'列重复映射
问题排查与解决方案
问题根源
异常明确指出Agency实体的id列被重复映射,问题出在你嵌入的Country类上——Country类中存在一个同样映射到id列的字段,和Agency自身的主键id产生了冲突。
解决方案
1. 修改嵌入类Country的字段映射
找到Country类的定义,把其中映射到id列的字段修改为其他不冲突的列名,比如country_id:
@Embeddable public class Country { // 替换原@Column(name="id")的写法 @Column(name="country_id") private Long id; // 其他字段... }
2. 优化Agency主键注解(可选但建议)
你在Agency的主键id上添加的@Column(insertable=false, updatable=false)对IDENTITY自增策略来说完全多余,Hibernate会自动处理自增主键的插入和更新,建议移除该注解简化代码:
@Entity @Table(name="tr_agency") @Data @AllArgsConstructor @NoArgsConstructor public class Agency { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) // 移除多余的@Column注解 private long id; // 其他字段... }
验证
修改后重新启动应用,重复映射的问题即可解决。
内容的提问来源于stack exchange,提问作者Abdessamad_xerox
相关产品推荐
相关产品推荐

