SpringBoot集成YugabyteDB时出现方法不存在异常求助
SpringBoot集成YugabyteDB时方法不存在异常的解决办法
这是典型的依赖版本不兼容问题:你使用的spring-data-yugabytedb-ysql:2.3.0依赖的Spring Data JDBC版本,和项目实际引入的spring-data-jdbc:2.4.2不匹配,导致DefaultYsqlDataAccessStrategy初始化时找不到目标构造方法。
问题细节
DefaultYsqlDataAccessStrategy(来自spring-data-yugabytedb-ysql 2.3.0)在初始化时,尝试调用DefaultDataAccessStrategy的4参数构造方法,但spring-data-jdbc 2.4.2版本中该构造方法已被修改或移除,因此抛出方法不存在异常。
解决方案
- 降级Spring Data JDBC版本:根据版本适配规则,
spring-data-yugabytedb-ysql:2.3.0对应Spring Data JDBC 2.3.x系列,将项目中spring-data-jdbc的版本调整为2.3.x(比如2.3.5)。 - 升级Spring Data YugabyteDB版本:查找YugabyteDB官方发布说明,选择支持Spring Data JDBC 2.4.2的spring-data-yugabytedb-ysql版本进行升级。
异常详情
描述:尝试调用不存在的方法
调用发起位置:
com.yugabyte.data.jdbc.core.convert.DefaultYsqlDataAccessStrategy.<init>(DefaultYsqlDataAccessStrategy.java:49)不存在的方法:
'void org.springframework.data.jdbc.core.convert.DefaultDataAccessStrategy.<init>(org.springframework.data.jdbc.core.convert.SqlGeneratorSource, org.springframework.data.relational.core.mapping.RelationalMappingContext, org.springframework.data.jdbc.core.convert.JdbcConverter, org.springframework.jdbc.core.namedparam.NamedParameterJdbcOperations)'调用类加载路径:
jar:file:/Users/shubhankar.ghosh/.m2/repository/com/yugabyte/spring-data-yugabytedb-ysql/2.3.0/spring-data-yugabytedb-ysql-2.3.0.jar!/com/yugabyte/data/jdbc/core/convert/DefaultYsqlDataAccessStrategy.class被调用类可用路径:
jar:file:/Users/shubhankar.ghosh/.m2/repository/org/springframework/data/spring-data-jdbc/2.4.2/spring-data-jdbc-2.4.2.jar!/org/springframework/data/jdbc/core/convert/DefaultDataAccessStrategy.class
内容的提问来源于stack exchange,提问作者Shubhankar Ghosh
相关产品推荐
相关产品推荐

