Hi,

I am using apache-cassandra-1.0.0 and I tried to insert/retrieve data in a
column family using cassandra-jdbc program.
Here is how I created 'USER' column family using cassandra-cli.

create column family USER with comparator=UTF8Type
and column_metadata=[{column_name: user_id, validation_class: UTF8Type,
index_type: KEYS},
{column_name: username, validation_class: UTF8Type, index_type: KEYS},
{column_name: password, validation_class: UTF8Type}];

But, when i try to insert data to USER column family it gives the error
"java.sql.SQLException: Mismatched types: java.lang.String cannot be cast
to java.nio.ByteBuffer".

Since I have set user_id as a KEY and it's validation_class as UTF8Type, I
was expected Key Validation Class as UTF8Type.
But when I look at the meta-data of USER column family it shows as "Key
Validation Class: org.apache.cassandra.db.marshal.BytesType" which has
cause for the above error.

When I created USER column family as follows, it solves the above issue.

create column family USER with comparator=UTF8Type and
key_validation_class=UTF8Type
and column_metadata=[{column_name: user_id, validation_class: UTF8Type,
index_type: KEYS},
{column_name: username, validation_class: UTF8Type, index_type: KEYS},
{column_name: password, validation_class: UTF8Type}];

Do we always need to define *key_validation_class* as in the above query ?
Isn't it not enough to add validation classes for each column ?

Regards,
~Dinusha~

Reply via email to