【发布时间】:2016-05-06 06:52:02
【问题描述】:
我有一张大致像这样的桌子
create table mytable (
id uuid,
something text,
primary key (id)
);
我正在尝试创建一个具有绑定子句的准备好的语句:
PreparedStatement ps = session.prepare("select * from mytable where id IN (?)");
...
UUID[] ids = { uuid1, uuid2, uuid3} ;
无论我如何表达要绑定的 id,java 驱动程序都会拒绝它们。
ps.bind( /*as array*/): 司机抱怨声明只有一个值,提供了 2 个
ps.bind( /*as comma separated string list of uuids*/): 驱动程序抱怨它想要 UUID.class 对象,而不是字符串
ps.bind( /*as list object*/): 驱动程序抱怨它想要 UUID.class 对象,而不是 List.class 对象
我真的希望司机不要期待这么多?占位符,因为 in-list 中有值,因为这意味着您每次想要执行它时都必须重新准备语句,Datastax 文档说不要这样做!
我查看了com.datastax.driver.core.BoundStatement.bind() 方法,没有任何迹象表明其他方法会起作用 - 没有魔法包装或任何东西。
有没有办法做到这一点?
【问题讨论】:
标签: java data-binding cassandra cql cql3