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

无Spring的JPA环境新增RealState到MySQL报admin_id无默认值错误

问题根因

报错的核心原因是real_states表的admin_id外键列没有被正确赋值,触发了数据库非空约束。你虽然给Admin对象设置了admin_id,但JPA的外键映射配置不匹配,导致值没有写入到正确的数据库字段中:

  • RealState实体中@ManyToOne关联Admin的字段没有显式指定@JoinColumn,Hibernate默认生成的外键列名为admin_admin_id(规则为关联属性名+下划线+关联实体主键名),和你数据库表中实际的admin_id列名不一致,导致赋值的Admin ID没有写入到admin_id字段,最终触发无默认值报错。
修复方案
  1. 补全RealState实体的外键映射配置
    在RealState的admin字段上添加@JoinColumn注解,指定外键列名和数据库表一致:
@ManyToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "admin_id", nullable = false) // 显式绑定数据库外键列名
private Admin admin;
  1. 可选优化(避免后续主键冲突)
    如果你的数据库中已经预先存在admin_id=1的管理员账号,不需要每次插入房产都新建Admin对象,否则会触发主键重复报错,建议改为先查询已存在的Admin再绑定关系:
// 替换原有new Admin的代码块
Admin admin = em.find(Admin.class, "1");
if (admin == null) {
    admin = new Admin();
    admin.setAdmin_id("1");
    admin.setAdmin_name("pepe");
    admin.setAdmin_phone("32132");
}
  1. 表结构校验
    确认real_states表的外键列名确实为admin_id,无拼写错误或多余的非空约束。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.20 21:06:10