2016-09-12 5 views
1

моя структура Cassandra DB:как вставить значение java-списка в cassadra с помощью java-кода?

CREATE TABLE devjavasource.userorders (
user_id text PRIMARY KEY, 
name text, 
rlist list<text> 
) WITH bloom_filter_fp_chance = 0.01 
AND caching = {'keys': 'ALL', 'rows_per_partition': 'NONE'} 
AND comment = '' 
AND compaction = {'class': 'org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy', 'max_threshold': '32', 'min_threshold': '4'} 
AND compression = {'chunk_length_in_kb': '64', 'class': 'org.apache.cassandra.io.compress.LZ4Compressor'} 
AND crc_check_chance = 1.0 
AND dclocal_read_repair_chance = 0.1 
AND default_time_to_live = 0 
AND gc_grace_seconds = 864000 
AND max_index_interval = 2048 
AND memtable_flush_period_in_ms = 0 
AND min_index_interval = 128 
AND read_repair_chance = 0.0 
AND speculative_retry = '99PERCENTILE'; 

мой код:

import com.datastax.driver.core.*; 
import java.util.ArrayList; 
import java.util.Arrays; 
import java.util.List; 
    public class cassandraList 
    { 

public static void main(String[] args) { 
    Cluster cluster = null; 
    Session session = null; 
    cluster = cluster.builder().addContactPoint("192.168.1.23").build(); 
    List<String> list= new ArrayList<String>(); 
    list.add("[email protected]"); 
    list.add("[email protected]"); 

    session = cluster.connect("devjavasource"); 

    System.out.println("test :" +list); 

    Statement st = new SimpleStatement("INSERT INTO USERS (user_id, name, Rlist) VALUES ('11101', 'john', "+list+");"); 

    System.out.println("query :" +"INSERT INTO USERS (user_id, name, Rlist) VALUES ('11101', 'john', "+routing_points+");"); 
    ResultSet rs = session.execute(st); 

    } 

я получил ошибку, поэтому получить запрос от оператора печати, как это:

INSERT INTO USERS (user_id, name, Rlist) VALUES ('11101', 'john', [AUE, SAN, UK, LON]); 

Затем я выполнить этот запрос для cql вручную, я получил эту ошибку:

SyntaxException:

Пожалуйста, помогите решить эту проблему.

ответ

0

Поскольку ваш список состоит из строк, то это должно сделать трюк:

INSERT INTO USERS (user_id, name, Rlist) VALUES ('11101', 'john', ['AUE', 'SAN', 'UK', 'LON']); 
+0

В Java, как создать список строки, которые имеют одиночные кавычки динамически – Sathya

+0

Я получил список Java с одинарными кавычками, как это сделать? – Sathya

+0

Мне нужна дополнительная информация. Вы готовите запрос? Если бы вы могли опубликовать код того, как вы пытаетесь вставить, я мог бы взглянуть. –

1

Использование связывания маркеров:

List<String> list = new ArrayList<String>(); 
list.add("[email protected]"); 
list.add("[email protected]"); 
Statement st = new SimpleStatement("INSERT INTO USERS (user_id, name, rlist) VALUES ('11101', 'john', ?);", list); 
ResultSet rs = session.execute(st);