Spring Boot中已定义@Id属性仍报实体无标识符错误,如何解决?
问题解决:JPA实体无标识符错误
错误原因
你当前使用的@Id注解来自Spring Data包(org.springframework.data.annotation.Id),但JPA实体要求使用Jakarta Persistence规范的@Id注解。Hibernate作为JPA实现,无法识别Spring Data的@Id,因此抛出实体无标识符的异常。
修改方案
只需替换@Id的导入包即可:
- 删除原导入语句:
import org.springframework.data.annotation.Id; - 替换为Jakarta Persistence的
@Id:import jakarta.persistence.Id;
修改后的Book实体类代码:
import jakarta.persistence.Column; import jakarta.persistence.Entity; import jakarta.persistence.GeneratedValue; import jakarta.persistence.GenerationType; import jakarta.persistence.Id; import lombok.Getter; @Entity public class Book { @Getter @Id @GeneratedValue(strategy = GenerationType.AUTO) private long id; @Column(nullable = false, unique = true) private String title; @Column(nullable = false) private String author; }
额外优化建议(可选)
如果使用Lombok,可以给title和author字段添加@Getter/@Setter,或者直接在类上添加@Data注解,简化代码编写。
内容的提问来源于stack exchange,提问作者AJ612
相关产品推荐
相关产品推荐

