0

Javaのエンティティを使用してテーブルを作成するためにサポート -春データは、設定ファイルがAbstractCassandraConfigurationとオーバーライド機能を拡張して、私はカサンドラのデータベースと接続するために、春データカサンドラを使用しています

@Override 
public SchemaAction getSchemaAction() { 
    return SchemaAction.RECREATE_DROP_UNUSED; 
} 

@Override 
public String[] getEntityBasePackages() { 
    return new String[] {"com.example"}; 
} 

私の目的は、カサンドラにテーブルを自動的に作成することです@Tableアノテーションを使用してcom.exampleパッケージ内の前述のエンティティから取得します。例えば - このエンティティの

package com.example; 

import org.springframework.data.cassandra.mapping.PrimaryKey; 
import org.springframework.data.cassandra.mapping.Table; 

@Table(value="goal") 
public class Goal { 

    @PrimaryKey 
    private int id; 

    private String description; 

    public Goal(int id, String description) { 
     this.id = id; 
     this.description = description; 
    } 

    public Goal() { 

    } 

    public int getId() { 
     return id; 
    } 

    public String getDescription() { 
     return description; 
    } 


    public void setId(int id) { 
     this.id = id; 
    } 

    public void setDescription(String description) { 
     this.description = description; 
    } 

    @Override 
    public String toString() { 
     return "Goals [id=" + id + ", description=" + description + "]"; 
    } 

} 

、与えられた構成では、一つのテーブルには、春の初期化時に作成されるはずです、しかし、それはそうしませんでした。 例外はありませんが、カッサンドラには何も作成されません。 ご協力いただければ幸いです。ありがとう。

+1

Spring Bootを使用している場合、これはまだ動作しません。この問題のチケット(https://github.com/spring-projects/spring-boot/issues/4886)が公開されています。あなたの投票を投げたいかもしれません。 – mp911de

+2

注意深く、一般的にアプリケーションを自動的に*あなたにスキーマを生成させるのは悪い考えです。スキーマとデータモデルはCassandraでのアプリの成功にとって非常に重要ですので、自分で気をつけてください。 – doanduyhai

+0

こんにちは@ mp911de、コメントありがとうございます。しかし、私は** SchemaAction **プロパティの変更はうまくいくと思います。私はすでに** BasicCassandraMappingContext **のBeanを作成していますので、理想的にはうまくいくはずです。 現在エンティティからテーブルを自動作成するための回避策はありますか? – Bhushan

答えて

0

私も私のために同様の要件と、次の作品に直面: - あなたのコンテキストが起動したら

@Bean 
public CassandraClusterFactoryBean cluster() { 

    CassandraClusterFactoryBean cluster = new CassandraClusterFactoryBean(); 
    cluster.setContactPoints("127.0.0.1"); 
    cluster.setPort(9042); 
    return cluster; 
}  
public String[] getEntityBasePackages() { 
    return new String[] { "com.user.entity" }; 
} 

protected String getKeyspaceName() { 
    return "user_db"; 
} 

public SchemaAction getSchemaAction() { 
    return SchemaAction.CREATE_IF_NOT_EXISTS; 
} 

を、あなたは、カサンドラのテーブルを確認することができます。 あなたの鍵スペースはすでにcassandraで作成されているものとします。 オンザフライでキースペースも作成したい場合はお知らせください。

+0

私は理解しようとしています、これは私が試していたものとどのように違うのですか? 私は試しました - ** SchemaAction.RECREATE_DROP_UNUSED; ** これはうまくいきませんでした。 これを説明していただけますか? – Bhushan

関連する問題

 関連する問題