Обновление (2017-JAN-31) Код всего кода можно получить здесь: C Y Kan's Mastering Cassandra Tutorial Video with free sample code. Я попытался улучшить главу 54 с образцом кода из skk, и это не помогло. Помп ниже на самом деле из главы 52 (я думаю, CY забыл изменить тег имени, когда он скопировал pom.xml).Требуется: Помогите сделать SpringBoot CassandraTemplate Пример работы
Независимо от того, что я делаю, я получаю одну из следующих ниже ошибок в зависимости от того, какие версии я указываю (или если я укажу версию) для Cassandra-Driver-Core.
Как предложил skk, я попробовал весеннюю загрузку 1.4.4 и другие версии.
Я подтвердил, что у меня действительно есть пространство ключей «cwt» и лицо, определенное в Кассандре. Какие еще детали вам нужны?
Хорошо, вот моя попытка улучшить исходный код CY Kan с предложением Skk. Это приводит к ошибке ниже о невозможности создания сеанса bean. Если я явно укажу 3.1.2 ядро драйвера Cassandra, он успешно подключится, но даст мне ошибку noSuchMethod. В отличие от ошибки в главе 52 (ниже), ошибка noSuchMethod происходит в компоненте Cassandra Mapping в главе 54.
package com.cassandrawebtrader.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.cassandra.config.CassandraClusterFactoryBean;
import org.springframework.data.cassandra.config.java.AbstractCassandraConfiguration;
import org.springframework.data.cassandra.mapping.BasicCassandraMappingContext;
import org.springframework.data.cassandra.mapping.CassandraMappingContext;
import org.springframework.data.cassandra.repository.config.EnableCassandraRepositories;
@Configuration
@EnableCassandraRepositories(basePackages="com.cassandrawebtrader")
public class CassandraConfig extends AbstractCassandraConfiguration {
@Override
protected String getKeyspaceName() {
// TODO Auto-generated method stub
return "cwt";
}
/*
@Bean
public CassandraClusterFactoryBean cluster() {
CassandraClusterFactoryBean cluster = new CassandraClusterFactoryBean();
cluster.setContactPoints("127.0.0.1");
cluster.setPort(9042);
return cluster;
}
*/
@Bean
public CassandraMappingContext cassandraMapping() {
return new BasicCassandraMappingContext();
}
// begin paste from http://stackoverflow.com/questions/41881168/wanted-help-making-springboot-cassandratemplate-example-work/41910388#41910388
String cassandraContactPoints = "127.0.0.1";
String cassandraPort = "9042";
@Bean
public CassandraClusterFactoryBean cluster() {
CassandraClusterFactoryBean cluster = new CassandraClusterFactoryBean();
cluster.setContactPoints(cassandraContactPoints);
cluster.setPort(Integer.parseInt(cassandraPort));
return cluster;
}
@Bean
public CassandraMappingContext mappingContext() {
return new BasicCassandraMappingContext();
}
@Bean
public org.springframework.data.cassandra.convert.CassandraConverter converter() {
return new org.springframework.data.cassandra.convert.MappingCassandraConverter(mappingContext());
}
@Bean
public org.springframework.data.cassandra.config.CassandraSessionFactoryBean session() throws Exception {
org.springframework.data.cassandra.config.CassandraSessionFactoryBean session = new org.springframework.data.cassandra.config.CassandraSessionFactoryBean();
session.setCluster(cluster().getObject());
session.setKeyspaceName(getKeyspaceName());
session.setConverter(converter());
session.setSchemaAction(org.springframework.data.cassandra.config.SchemaAction.NONE);
return session;
}
/*
@Bean
public org.springframework.data.cassandra.core.CassandraOperations cassandraTemplate() throws Exception {
return new org.springframework.data.cassandra.core.CassandraTemplate(session().getObject());
}
*/
// end paste from http://stackoverflow.com/questions/41881168/wanted-help-making-springboot-cassandratemplate-example-work/41910388#41910388
}
Какие другие подробности вы хотели бы?
Обновление (2017-JAN-30): skk, пожалуйста, напишите свой код драйвера java.
Как было предложено skk, я попробовал предложенный номер версии и попробовал предложенные компоненты.
я все еще получаю подобную ошибку:
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'cassandraMapping' defined in class path resource [com/cassandrawebtrader/config/CassandraConfig.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.data.cassandra.mapping.CassandraMappingContext]: Factory method 'cassandraMapping' threw exception; nested exception is java.lang.NoSuchMethodError: com.datastax.driver.core.DataType.asJavaClass()Ljava/lang/Class;
Благодарности
Ранее обновление: Как было предложено, я попытался удалить номера версий для компонентов Cassandra и просто указать 1.4.3.RELEASE для весна-загрузки-стартер-родитель, и я получил эту ошибку:
Error creating bean with name 'session' defined in class path resource [org/springframework/boot/autoconfigure/data/cassandra/CassandraDataAutoConfiguration.class]: Invocation of init method failed; nested exception is com.datastax.driver.core.exceptions.NoHostAvailableException: All host(s) tried for query failed (tried: localhost/127.0.0.1:9042 (com.datastax.driver.core.exceptions.InvalidQueryException: unconfigured table schema_keyspaces))
Так что теперь он даже не подключен (до его подключения).
Оригинал: После многих часов поиска Google и не найдя каких-либо образцов Java/пружинно-загрузочные/Cassandra, которые работают, я, наконец, нашел пример CQLTemplate в главе 52 из видео здесь: [PacktPub CY Кана Mastering Кассандры 2nd Ed ] работает. 1. Это работает! (Тем не менее, мне нужно использовать CassandraTemplate вместо CQLTemplate).
Это означает, что у меня есть Cassandra 3.9 правильно работает на Windows 10 и java 1.8 - вы согласны?
Следующий пример (глава 53 из этого учебника) использует CassandraTemplate и я получаю эту ошибку:
java.lang.NoSuchMethodError: com.datastax.driver.core.DataType.asJavaClass()Ljava/lang/Class;
я обнаружил в главе 52, что я должен изменить версию com.datastax.cassandra/Cassandra -driver-core от 2.1.6 до 3.0.0. Я экспериментировал с изменением версий com.datastax.cassandra/assandra-driver-mapping и пока не повезло. Вот мой слегка измененный pom.xml, который я загрузил из PacktPub (см. Ниже). Может ли кто-нибудь помочь мне выполнить эту работу или предложить другой пример CassandraTemplate (который отображает POJO в базе данных Cassandra), который работает?
спасибо! Siegfried
<?xml version="1.0" encoding="UTF-8"?>
http://maven.apache.org/xsd/maven-4.0.0.xsd "> 4.0.0
<groupId>com.cassandrawebtrader</groupId>
<artifactId>chapter51</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>chapter51</name>
<description>Demo project for Spring Boot</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<!--<version>1.2.5.RELEASE</version> -->
<version>1.2.8.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-cassandra</artifactId>
</dependency>
<dependency>
<groupId>com.datastax.cassandra</groupId>
<artifactId>cassandra-driver-core</artifactId>
<version>3.0.0</version> <!-- 2.1.6 -->
</dependency>
<dependency>
<groupId>com.datastax.cassandra</groupId>
<artifactId>cassandra-driver-mapping</artifactId>
<version>3.0.0</version> <!-- 2.1.6 -->
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
Есть ли причина, по которой вы используете старую версию весенней загрузки? Текущая версия 1.4.3.RELEASE. Тогда вам не нужно беспокоиться о настройке версий драйвера cassandra, поскольку по умолчанию они имеют вышеупомянутую версию, вероятно, будут реализовывать этот вызов метода. – anand1st
Это не сработало, потому что у меня другая ошибка. – user3477493
Различные ошибки могут означать прогресс в некоторых случаях. Возможно, вам следует отредактировать сообщение и добавить указанную ошибку. Или это было выше NoHostAvailableException? – anand1st