Spring Boot 1.5.x with Spring Data Cassandra 1.5.x 与 Cassandra 2.1 不兼容
Posted
技术标签:
【中文标题】Spring Boot 1.5.x with Spring Data Cassandra 1.5.x 与 Cassandra 2.1 不兼容【英文标题】:Spring Boot 1.5.x with Spring Data Cassandra 1.5.x is incompatible with Cassandra 2.1 【发布时间】:2018-01-16 10:21:36 【问题描述】:我正在尝试使用 Cassandra 2.1 升级到带有 Spring Data Cassandra 1.5.x 的 Spring Boot 1.5,但出现启动错误:
实例化失败 [org.springframework.data.cassandra.mapping.CassandraMappingContext]: 工厂方法“cassandraMapping”抛出异常;嵌套异常是 java.lang.NoClassDefFoundError: com/datastax/driver/core/DataType$CollectionType
卡桑德拉详情:
[cqlsh 5.0.1 |卡桑德拉 2.1.15.1403 | DSE 4.8.9 | CQL 规范 3.2.1 | 原生协议 v3]
如何升级到 Spring Boot 1.5?
编辑:有没有办法在我的 pom.xml 中使用 Spring Boot Dependencies 1.5 作为父级,但保留 Spring Data Cassandra 1.4
【问题讨论】:
您觉得我的回答有帮助吗? 是的,但也许我没有问对问题。有没有办法在我的 pom.xml 中使用 Spring Boot Dependencies 1.5 作为父级但保留 Spring Data Cassandra 1.4?我编辑了我的问题以反映这一变化。 如果我的回答有帮助,请放弃。谈到您的另一个问题,是的,您可以单独为 Cassandra 定义 Spring 数据并为其提供版本。给我看看你的 XML。 【参考方案1】:这意味着您要查找的类没有任何定义,因为预期的 jar 中缺少该类。您正在为 Cassandra 使用 Spring data 1.5 的高级版本并尝试连接到 2.1.15,这仅与 Spring data 1.4 兼容。
您可以继续使用 Spring data 1.4,也可以考虑将 Cassandra 从 2.1 切换到 3.1.3
Spring Data Cassandra 1.5 发布,内部使用 Cassandra java driver 3.1.3
参考:https://docs.spring.io/spring-data/cassandra/docs/1.5.6.RELEASE/reference/html/
【讨论】:
【参考方案2】:您可以为 Cassandra 使用以下依赖项。
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-cassandra</artifactId>
<version>1.4.11.RELEASE</version>
</dependency>
【讨论】:
以上是关于Spring Boot 1.5.x with Spring Data Cassandra 1.5.x 与 Cassandra 2.1 不兼容的主要内容,如果未能解决你的问题,请参考以下文章
再见 Spring Boot 1.X ,Spring Boot 2.X 走向舞台中心
Spring Boot 1.5.x 与 Hibernate 4.x 的兼容性