繁体   English   中英

如何在CQL 3预处理语句中绑定IN子句值?

[英]How to bind IN-clause values in a CQL 3 prepared statement?

我有一张大致相似的桌子

create table mytable (
   id uuid,
   something text,
   primary key (id)
);

我正在尝试创建一个具有绑定in子句的预准备语句:

PreparedStatement ps = session.prepare("select * from mytable where id IN (?)");
...
UUID[] ids = { uuid1, uuid2, uuid3} ;

无论我如何表达要绑定的id,java驱动程序都会拒绝它们。

ps.bind( /*as array*/) :driver complains语句只有一个值,2提供

ps.bind( /*as comma separated string list of uuids*/) :驱动程序抱怨它想要UUID.class对象,而不是字符串

ps.bind( /*as list object*/) :驱动程序抱怨它想要UUID.class objs,而不是List.class对象

我真的希望司机不要期待那么多? 占位符因为列表中有值,因为这意味着每次要执行它时都必须重新编写语句,Datastax文档说不要这样做!

我查看了com.datastax.driver.core.BoundStatement.bind()方法,没有任何迹象表明其他任何东西都可以工作 - 没有魔术包装或任何东西。

有没有办法做到这一点?

正确的语法是SELECT * FROM mytable WHERE id IN ? (周围没有parens ? )。 这将允许您传递UUID列表以绑定到该单个查询参数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM