You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot配置User与CTable一对一关联出现Hibernate注解异常如何解决

错误原因
  1. 关联映射的mappedBy属性值不匹配:
    一对一关联中,mappedBy的值必须和关系维护端(持有外键的实体,此处为User类)中对应的关联属性名完全一致。你在User类中定义的关联CTable的属性名为currenTable,但CTable类中@OneToOne(mappedBy = "table")指定的属性名为table,Hibernate无法在User类中找到名为table的属性,因此抛出注解异常。
  2. 潜在附加问题:
    • User类中的CTable属性名存在拼写错误:currenTable缺少字母t,正确应为currentTable
    • CTable类使用@Table(name = "table")指定表名,table是SQL标准保留字,后续执行数据库操作时会触发SQL语法错误。
解决方案

按以下步骤修改代码即可解决:

  • 修正mappedBy属性值,和User类的关联属性名保持一致,建议顺便修正属性拼写错误
  • 修改CTable的表名,避免使用SQL保留字

修正后核心代码示例

User类关联部分

// 其余代码保持不变
// 修正属性名拼写
@OneToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "table_id", referencedColumnName = "id")
private CTable currentTable;

CTable类关联及表名部分

// 修正表名,避免SQL保留字冲突
@Entity
@Data
@NoArgsConstructor
@AllArgsConstructor
@ToString
@Table(name = "restaurant_table")
public class CTable {
    // 其余属性保持不变
    // mappedBy值与User类中的关联属性名完全一致
    @OneToOne(mappedBy = "currentTable")
    private User currentUser;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 12:45:04