0

java varlıkları kullanarak tablolar oluşturmak için desteklemektedir -Bahar veri yapılandırma dosyası AbstractCassandraConfiguration ve öncelikli işlevleri uzanan, ben Cassandra veritabanına bağlanmak için, Bahar veri Cassandra kullanıyorum

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

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

My amacı Cassandra'ya otomatik tabloları oluşturmaktır com.example paketindeki belirtilen varlıklardan @Table ek açıklama ile. Örneğin - Bu varlık için

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

} 

, verilen yapılandırmayla, bir masa bahar başlatma sırasında oluşturulan, Ama bunu başaramazsa iyi olur. Yine de istisna yok, Cassandra'da hiçbir şey yaratmıyor. Herhangi bir yardım mutluluk duyacaktır. Teşekkürler.

+1

Spring Boot'u kullanırken, bu işlem henüz kutudan çıkmıyor. Bu sorun için açık bir bilet (https://github.com/spring-projects/spring-boot/issues/4886) var, belki de oylarınızı kullanmak istiyorsunuz. – mp911de

+2

Dikkat, genellikle bir uygulamanın * otomatik olarak size şema oluşturmasına izin vermek kötü bir fikirdir. Şema ve veri modeli uygulamalarınızın Cassandra ile başarısı için çok önemlidir, bu yüzden kendinize iyi bakın – doanduyhai

+0

Merhaba @ mp911de, Yorum için teşekkürler. Ama bence ** SchemaAction ** özelliği değişmeli. Ben zaten ** BasicCassandraMappingContext **, fasulye oluşturuyorum, İdeal Çalışmalıdır. Tabloları şu anki varlıklardan otomatik olarak oluşturmak için herhangi bir geçici çözüm var mı? – Bhushan

cevap

0

Ben de benim için benzer gereksinimi ve aşağıdaki eserlerini karşı karşıya: - sizin bağlam hale geldikten sonra

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

, sen cassandra tabloyu kontrol edebilirsiniz. Anahtar alanınızın cassandra'da zaten oluşturulduğu varsayılır. Ayrıca, anında anahtar boşluk oluşturmak istiyorsanız lütfen bilgilendirin.

+0

Sadece anlamaya çalışıyorum, Bu denediğim şeyden nasıl farklıdır. Denedim - ** SchemaAction.RECREATE_DROP_UNUSED; ** Ve bu işe yaramadı. Bunu açıklar mısınız? – Bhushan

İlgili konular