0

I Frühling Daten Cassandra verwenden, mit Cassandra Datenbank zu verbinden, mit Konfigurationsdatei AbstractCassandraConfiguration und übergeordnete Funktionen erstrecken -Frühling Daten unterstützen Tabellen erstellen java Einheiten mit

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

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

Mein Ziel ist es Tabellen automatisch in Cassandra zu erstellen von den erwähnten Entitäten in com.example Paket mit @Table Annotation. Zum Beispiel -

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 + "]"; 
    } 

} 

Für diese Einheit, mit der gegebenen Konfiguration sollte eine Tabelle im Frühjahr Initialisierung erstellt, aber es nicht zu tun. Keine Ausnahme, es schafft nichts in Cassandra. Jede Hilfe wäre willkommen. Vielen Dank.

+1

Wenn Spring Boot verwendet wird, funktioniert dies nicht sofort aus der Box. Es gibt ein offenes Ticket (https://github.com/spring-projects/spring-boot/issues/4886) für dieses Problem, vielleicht möchtest du deine Stimme abgeben. – mp911de

+2

Vorsicht, generell ist es eine schlechte Idee, eine Anwendung * automatisch * ein Schema für Sie generieren zu lassen. Schema und Datenmodell sind entscheidend für den Erfolg deiner Apps bei Cassandra also pass auf dich auf – doanduyhai

+0

Hi @ mp911de, Danke für den Kommentar. Aber ich denke, das Ändern der Eigenschaft ** SchemaAction ** sollte funktionieren. Ich erstelle bereits die Bean von ** BasicCassandraMappingContext **, also sollte es Idealerweise funktionieren. Gibt es eine Problemumgehung zum automatischen Erstellen der Tabellen von Entitäten ab sofort? – Bhushan

Antwort

0

ich sah sich auch ähnliche Anforderung und folgende Arbeiten für mich: -

@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; 
} 

Sobald Ihr Kontext nach oben ist, können Sie die Tabelle in cassandra überprüfen können. Es wird angenommen, dass Ihr Schlüsselbereich bereits in Cassandra erstellt wurde. Bitte informieren Sie, wenn Sie auch Keyplace im laufenden Betrieb erstellen möchten.

+0

Ich versuche nur zu verstehen, wie ist das anders als das, was ich versuchte. Ich habe versucht - ** SchemaAction.RECREATE_DROP_UNUSED; ** Und das hat nicht funktioniert. Können Sie dies bitte erklären. – Bhushan

Verwandte Themen