SpringBoot整合EclipseLink与H2启动报EclipseLink-7042错误如何解决?
问题根因
错误栈已经明确给出了故障原因:你当前使用的JPA实现是EclipseLink,但配置中错误填写了Hibernate的H2方言类,二者的数据库平台实现体系完全不兼容,Hibernate的方言类无法转换为EclipseLink要求的org.eclipse.persistence.internal.databaseaccess.Platform类型,所以启动时抛出类型转换异常。
解决方案
直接修改JpaProperties中数据库平台的配置即可:
- 将原配置的Hibernate方言类替换为EclipseLink对应的H2数据库平台实现
- 同时删除原配置值末尾的多余空格
修改后的配置代码如下:
@Bean @Primary public static JpaProperties properties() { final JpaProperties jpaProperties = new JpaProperties(); jpaProperties.setShowSql(true); jpaProperties.setDatabasePlatform("org.eclipse.persistence.platform.database.H2Platform"); return jpaProperties; }
其他排查校验点
如果修改后还有异常,可以逐一检查以下项:
- 配置的数据库平台类全限定名没有拼写错误
- 项目的EclipseLink依赖包完整,包含对应数据库的Platform实现类
- 若使用自定义数据库平台,确认该类继承了EclipseLink的
org.eclipse.persistence.platform.database.DatabasePlatform父类 - 若使用其他数据库,对应替换为EclipseLink官方提供的对应平台类,比如MySQL对应
org.eclipse.persistence.platform.database.MySQLPlatform、Oracle对应org.eclipse.persistence.platform.database.OraclePlatform
内容的提问来源于stack exchange,提问作者Nunyet Calçada
相关产品推荐
相关产品推荐

