cassandra-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Dave Brosius <dbros...@mebigfatguy.com>
Subject Re: com.datastax.driver.core.exceptions.InvalidTypeException: Invalid type for value 1 of CQL type text, expecting class java.lang.String but class [Ljava.lang.Object; provided
Date Sat, 07 Dec 2013 22:03:49 GMT
BoundStatement query = prBatchInsert.bind(userId, 
attributes.values().toArray(new *String*[attributes.size()]))



On 12/07/2013 03:59 PM, Techy Teck wrote:
> I am trying to insert into Cassandra database using Datastax Java 
> driver. But everytime I am getting below exception at 
> `prBatchInsert.bind` line-
>
>     com.datastax.driver.core.exceptions.InvalidTypeException: Invalid 
> type for value 1 of CQL type text, expecting class java.lang.String 
> but class [Ljava.lang.Object; provided
>
> Below is my method which accepts `userId` as the input and 
> `attributes` as the `Map` which contains `key` as my `Column Name` and 
> value as the actual value of that column
>
> public void upsertAttributes(final String userId, final Map<String, 
> String> attributes, final String columnFamily) {
>
>         try {
>             Set<String> keys = attributes.keySet();
>             StringBuilder sqlPart1 = new StringBuilder(); 
> //StringBuilder.append() is faster than concatenating Strings in a loop
>             StringBuilder sqlPart2 = new StringBuilder();
>
>             sqlPart1.append("INSERT INTO " + columnFamily + "(USER_ID ");
>             sqlPart2.append(") VALUES ( ?");
>
>             for (String k : keys) {
>                 sqlPart1.append(", "+k); //append each key
>                 sqlPart2.append(", ?");  //append an unknown value for 
> each key
>             }
>             sqlPart2.append(") "); //Last parenthesis (and space?)
>             String sql = sqlPart1.toString()+sqlPart2.toString();
>
>             CassandraDatastaxConnection.getInstance();
>             PreparedStatement prBatchInsert = 
> CassandraDatastaxConnection.getSession().prepare(sql);
> prBatchInsert.setConsistencyLevel(ConsistencyLevel.ONE);
>
>             // this line is giving me an exception
>             BoundStatement query = prBatchInsert.bind(userId, 
> attributes.values().toArray(new Object[attributes.size()])); //Vararg 
> methods can take an array (might need to cast it to String[]?).
>
> CassandraDatastaxConnection.getSession().executeAsync(query);
>
>         } catch (InvalidQueryException e) {
>             LOG.error("Invalid Query Exception in 
> CassandraDatastaxClient::upsertAttributes "+e);
>         } catch (Exception e) {
>             LOG.error("Exception in 
> CassandraDatastaxClient::upsertAttributes "+e);
>         }
>     }
>
>
> What wrong I am doing here? Any thoughts?


Mime
View raw message