2017-01-26 5 views
1

更新(2017-JAN-31)すべてのサンプルコードは利用可能です: C Y Kan's Mastering Cassandra Tutorial Video with free sample code私はskkからのサンプルコードで第54章を拡張しようとしましたが、それは助けになりませんでした。下のポームは実際には52章からです(私はpom.xmlをコピーしたときにCYが名前タグを変更するのを忘れたと思います)。募集:SpringBoot CassandraTemplateの作成を支援するヘルプ

私が何をしても、私はCassandra-Driver-Coreのバージョン(またはバージョンを指定した場合)によって、以下のいずれかのエラーが発生します。

skkが示唆しているように、私は春のブート1.4.4および他のバージョンを試しました。

私は確かにキースペース「cwt」とカサンドラで定義された人物を持っていることを確認しました。あなたはもっと多くの詳細を必要としますか?

ここで、CY Kanのソースコードをskkの提案で強化しようとしています。これにより、Beanセッションを作成できないという下記のエラーが発生します。 3.1.2 Cassandraドライバコアを明示的に指定すると、接続に成功しますが、noSuchMethodエラーが表示されます。ご希望の他のどのような詳細

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 

} 

第54章でカサンドラマッピング豆の章52エラー(下記)、noSuchMethodエラーが起こるとは対照的に?

更新(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; 

おかげ

以前のアップデート:

私はまだ同様のエラーを取得しています示唆したように、私はカサンドラ・コンポーネントのバージョン番号を削除しようとしただけのため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))

:春・ブート・スターター-親と私はこのエラーを受け取りました。

オリジナル:グーグルの多くの時間後 を検索して働く任意のJava /春ブート/カサンドラサンプルを見つけていない、私は最終的にここのビデオから第52章でCQLTemplate例が見つかりました:[PacktPub CY菅さんマスタリングカサンドラ第2版]が動作します。 1。これは動作します! (しかし、CQLTemplateの代わりにCassandraTemplateを使用する必要があります)。

これは、私がCassandra 3.9をWindows 10とJava 1.8で正しく動作させることを意味します - あなたは同意しますか?

次の例(このチュートリアルの章53)がCassandraTemplateを使用し、私はこのエラーを取得:私は第52章から発見さ

java.lang.NoSuchMethodError: com.datastax.driver.core.DataType.asJavaClass()Ljava/lang/Class;

私はcom.datastax.cassandraのバージョンを変更する必要があります/カサンドラドライバコア2.1.6〜3.0.0私はcom.datastax.cassandra/assandra-driver-mappingのバージョンを変更して実験してきました。以下は、私がPacktPub(下記)からダウンロードした、少し修正したpom.xmlです。誰かがこの仕事をするのを手伝ったり、別のCassandraTemplateの例(POJOをCassandraデータベースにマッピングする)の例を提案してもらえますか?

ありがとうございました! ジークフリート

<?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> 

+0

古いバージョンのspring-bootを使用している理由はありますか?現在のバージョンは1.4.3.RELEASEです。次に、上記のバージョンのデフォルトのものがおそらくこのメソッド呼び出しを実装するので、cassandraドライバのバージョンを設定することについて心配する必要はありません。 – anand1st

+0

違うエラーが発生したため、動作しませんでした。 – user3477493

+0

異なるエラーは、実際には進行状況を意味する場合もあります。おそらくあなたの投稿を編集し、上記のエラーを追加する必要があります。それとも上記のNoHostAvailableExceptionですか? – anand1st

答えて

0

以下コード例:Springブートバージョン - 1.4.3およびSpring-data cassandraバージョン - 1.4.6。Javaドライバのサンプルコードが必要かどうかお知らせください。

@Configuration 
public class CassandraConfig { 

    @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 CassandraConverter converter() { 
     return new MappingCassandraConverter(mappingContext()); 
    } 

    @Bean 
    public CassandraSessionFactoryBean session() throws Exception { 
     CassandraSessionFactoryBean session = new CassandraSessionFactoryBean(); 
     session.setCluster(cluster().getObject()); 
     session.setKeyspaceName(cassandraKeyspace); 
     session.setConverter(converter()); 
     session.setSchemaAction(SchemaAction.NONE); 
     return session; 
    } 

    @Bean 
    public CassandraOperations cassandraTemplate() throws Exception { 
     return new CassandraTemplate(session().getObject()); 
    } 
} 
関連する問題