无法创建OneToOne关联:Unknown mappedBy错误求助
OneToOne关联报错排查与修复
错误原因
报错核心是mappedBy属性值配置错误:
PersonalData类中@OneToOne(mappedBy = "personal_data")里的personal_data是数据库列名,但mappedBy要求指定的是关联实体(User)中的Java属性名。- User类中对应的关联属性是
personalData(驼峰命名),而非下划线格式,导致Hibernate无法找到对应属性,抛出Unknown mappedBy异常。
修复代码
修改PersonalData类中的@OneToOne注解的mappedBy值,改为User类中的属性名personalData:
@Entity @Table(name = "personal_data") public class PersonalData { @Id @Column(name = "id") @GeneratedValue(strategy = GenerationType.AUTO) private long id; // 修正mappedBy的值为User类中的属性名 @OneToOne(mappedBy = "personalData") private User user; // getters, setters }
User类代码无需修改,其@JoinColumn(name = "personal_data_id")配置正确,指定了user表中外键列的名称。
额外验证
- Gradle依赖配置:Spring Boot 2.7.3与MySQL 8.0.30版本兼容,JPA、Web等依赖配置正常。
- application.properties:数据库连接、Hibernate自动建表(
ddl-auto=update)等配置无问题,可正常生成关联表结构。
内容的提问来源于stack exchange,提问作者hhrzc
相关产品推荐
相关产品推荐

