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

Spring+spring-data-jpa创建EntityManagerFactory抛出数组越界异常如何解决

问题根因
  • 报错触发在org.jboss.jandex.Indexer类的字节码扫描逻辑中,是JDK版本与依赖的Jandex、Hibernate版本不兼容导致:你使用的JDK版本为16及以上,当前依赖的Jandex版本过低,无法解析高版本JDK编译生成的类字节码格式,扫描实体类包时抛出数组越界异常。
  • 额外存在2个配置/代码缺陷:
    1. JPA实体类CloudUser缺少无参构造函数,Hibernate无法实例化实体对象
    2. EntityManagerFactory配置缺失Hibernate必填的数据库方言等属性配置
修复步骤

1. 修复实体类

给CloudUser添加无参构造注解,Lombok场景下直接新增@NoArgsConstructor即可:

@Entity
@Getter
@Setter
@Builder
@AllArgsConstructor
@NoArgsConstructor // 新增这行
public class CloudUser {

    @Id
    @GeneratedValue
    private long id;
    private UUID uuid;
    private String lastUserName;
    private Date lastLogin;
    private String twitchId;
    private boolean subbed;

}

2. 补全EntityManagerFactory配置

修改entityManagerFactory的Bean定义,补充Hibernate相关属性,同时清理重复配置:

@Bean
public LocalContainerEntityManagerFactoryBean entityManagerFactory() {
    HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
    vendorAdapter.setShowSql(true);
    vendorAdapter.setGenerateDdl(true);
    // 新增指定MariaDB方言
    vendorAdapter.setDatabasePlatform("org.hibernate.dialect.MariaDBDialect");

    LocalContainerEntityManagerFactoryBean factory = new LocalContainerEntityManagerFactoryBean();
    factory.setJpaVendorAdapter(vendorAdapter);
    factory.setPackagesToScan("de.nebelniek.database.user");
    factory.setDataSource(dataSource());

    // 新增Hibernate额外配置
    Properties jpaProperties = new Properties();
    jpaProperties.put("hibernate.hbm2ddl.auto", "update");
    jpaProperties.put("hibernate.format_sql", true);
    factory.setJpaProperties(jpaProperties);

    return factory;
}

3. 升级兼容版本的依赖

在你的构建文件中显式引入高版本的Jandex依赖,适配高版本JDK:

Maven(pom.xml)

<dependency>
    <groupId>org.jboss</groupId>
    <artifactId>jandex</artifactId>
    <version>2.4.3.Final</version>
</dependency>

Gradle(build.gradle)

implementation 'org.jboss:jandex:2.4.3.Final'

如果上述修改后仍然报错,同步升级Hibernate Core版本到5.6.15.Final及以上即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 00:36:03