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

Spring Boot+Hibernate实体类报错:No identifier specified for entity排查

解决Hibernate No identifier specified for entity 错误

嘿,我一眼就发现问题所在了——你的@Id注解用错了包!

看你的实体类代码,你同时导入了org.springframework.data.annotation.Id和javax.persistence.*,但Hibernate(JPA的实现框架)只认JPA规范定义的javax.persistence.Id注解,而org.springframework.data.annotation.Id是Spring Data专为MongoDB这类非关系型数据库设计的注解,这就导致Hibernate完全识别不出你的主键字段,所以才会抛出No identifier specified for entity的错误。

解决步骤:

  • 删掉import org.springframework.data.annotation.Id;这行导入语句,因为你已经导入了javax.persistence.*,此时@Id会自动引用正确的JPA注解。
  • (可选)如果担心IDE自动导错包,也可以直接把@Id写成@javax.persistence.Id,明确指定注解的来源,彻底避免混淆。

修改后的实体类代码示例:

package com.example.demo.model;
import javax.persistence.*;

@Entity
@Table(name="CheckRes")
public class CheckRes {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private long ID;
    @Column(name="Check")
    private String Check;

    public CheckRes() { }

    public CheckRes(String check) {
        Check = check;
    }

    public long getID() { return ID; }
    public void setID(long ID) { this.ID = ID; }
    public String getCheck() { return Check; }
    public void setCheck(String check) { Check = check; }
}

额外提醒:

你的@Column(name="Check")里的Check是SQL的保留关键字(比如MySQL、SQL Server等主流数据库都将其列为保留字),后续执行SQL操作时很可能会出现语法错误。建议把列名改成check_content、check_item这类非关键字,或者根据数据库的语法规则用特殊符号包裹(比如MySQL用反引号`Check`,SQL Server用[Check])。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 22:37:49