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

Spring Boot BeanCreationException求助:Unknown access type record异常

解决BeanCreationException: Unknown access type record问题

问题根源

这个错误是JPA(Hibernate)无法识别Java Record作为实体类导致的:

  • 旧版本Hibernate(5.x及以下,对应Spring Boot 2.x)完全不支持Record作为实体;
  • 即使是支持Record的Hibernate 6.x(Spring Boot 3.x),Record作为实体也有诸多限制(比如不可变性、无默认构造器等),不适合新手学习阶段使用。

修复步骤

1. 将Record实体改为标准JPA实体类

如果是跟随旧教程学习,直接把Record改成带@Entity注解的普通类,示例:

import jakarta.persistence.Entity;
import jakarta.persistence.Id;

@Entity
public class User {
    @Id
    private Long id;
    private String username;
    private String email;

    // JPA必须的无参构造器
    public User() {}

    // 自定义构造器
    public User(Long id, String username, String email) {
        this.id = id;
        this.username = username;
        this.email = email;
    }

    // Getter和Setter方法(或用Lombok的@Data注解简化)
    public Long getId() { return id; }
    public void setId(Long id) { this.id = id; }
    public String getUsername() { return username; }
    public void setUsername(String username) { this.username = username; }
    public String getEmail() { return email; }
    public void setEmail(String email) { this.email = email; }
}

2. 检查Spring Boot版本(可选)

如果一定要用Java Record作为实体,需要:

  • 升级Spring Boot到3.x及以上(内置Hibernate 6.x);
  • 给Record添加@Entity和@Id注解,但这种方式有较多限制,不推荐新手使用。

3. 验证依赖配置

检查pom.xml中Spring Boot Starter Data JPA的依赖,确保版本匹配:

<!-- Spring Boot 2.x版本(对应Hibernate 5.x) -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>

<!-- 若升级到Spring Boot 3.x,依赖无需修改,但Java版本需为17+ -->

额外提示

  • JPA实体类必须提供无参构造器(Hibernate需要通过反射实例化实体);
  • 实体类属性需提供Getter/Setter,或用Lombok的@Data、@Getter+@Setter注解简化代码;
  • 确保@Id注解正确标记主键字段。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 09:01:03