Apache Ignite 缓存 "IN" 子句不起作用

Apache Ignite cache "IN" clause not working

我想做的是

    final String query = "select userName from users where userId  in
         (?) and isActive = 1";
            SqlFieldsQuery sql = new SqlFieldsQuery(query);
            List<Long> userIds = new ArrayList<Long>();
            userIds.add(140l);
            userIds.add(245l);

            sql.setArgs(userIds.toArray());
            List<List<?>> rsList = usersCache.query(sql).getAll();

。它没有给出预期的结果。它只返回一个结果 而不是两个。
请推荐

无法将数组作为参数传递给 in。您可以重写查询以改用联接。它将如下所示:

select u.userName from users u 
    join table (userId bigint=?) t on u.userId=t.userId 
where u.isActive=1

您应该考虑的另一件事是 SqlFieldsQuery.setArgs(...) 将可变参数作为参数。所以,为了防止你的数组被展开,你应该添加一个强制转换到 Object:

sql.setArgs((Object)userIds.toArray());