0

我正在尝试将字节数组插入 Cassandra 表中的 Blob 数据类型。我正在使用 Datastax Java 驱动程序。下面是我的代码 -

for (Map.Entry<String, byte[]> entry : attributes.entrySet()) {
    System.out.println("Key = " + entry.getKey() + ", Value = " + entry.getValue());

    String cql = "insert into test_data (user_id, name, value) values ('"+userId+"', '"+entry.getKey()+"', '"+entry.getValue()+"');";

    System.out.println(cql);

    CassandraDatastaxConnection.getInstance();

    CassandraDatastaxConnection.getSession().execute(cql);

}

这是我回来的例外 -

InvalidQueryException: cannot parse '[B@50908fa9' as hex bytes

我想问题是,我制作上面的 cql 的方式..肯定会丢失一些东西......

我已经创建了这样的表 -

create table test_data (user_id text, name text, value blob, primary key (user_id, name));

有谁能够帮我?谢谢...

4

1 回答 1

1

问题是,当您将字节数组附加到 String 时,它会在 byte[] 上调用 toString,它会打印您看到的无用指针。您需要手动将其转换为您的数据类型的字符串。在您的情况下,您使用的是 blob,因此您需要转换为十六进制字符串。

这个问题有将 byte[] 转换为 String 的代码:

如何在 Java 中将字节数组转换为十六进制字符串?

您可以使用其中一个功能并在其前面加上“0x”。然后,您的 blob 应该有一个有效的字符串。

于 2013-10-15T07:04:05.597 回答