【问题标题】:Create Cassandra @Query for one or more @Params为一个或多个 @Params 创建 Cassandra @Query
【发布时间】:2017-06-19 15:07:34
【问题描述】:

我正在尝试在 cassandra 数据库上执行 SELECT,使用 datastax 驱动程序 在 Java 应用程序。

我已经开发了简单的查询:

@Repository
public class CustomTaskRepository
    extends AbstractCassandraRepository<CustomTask> {

    @Accessor
    interface ProfileAccessor {
        @Query("SELECT * FROM tasks where status = :status")
        Result<CustomTask> getByStatus(@Param("status") String status);
    }

    public List<CustomTask> getByStatus(String status) {
        ProfileAccessor accessor = this.mappingManager.createAccessor(ProfileAccessor.class);
        Result<CustomTask> tasks = accessor.getByStatus(status);
        return tasks.all();
    }
}

这很好用。

我现在遇到的问题是我想为多个状态执行 SELECT 语句。例如,我想对一个、两个...或多个状态代码(待处理、工作、已完成等)执行查询。

我如何创建一个@Query 语句以灵活地接受一个或多个状态代码?

提前致谢!!!

编辑:表创建语句是:

CREATE TABLE tasks(
"reservation_id" varchar,
"task_id" UUID,
"status" varchar,
"asignee" varchar,
PRIMARY KEY((reservation_id),task_id)
)

WITH compaction = {'class': 'org.apache.cassandra.db.compaction.LeveledCompactionStrategy'} ;


CREATE INDEX taskid_index ON tasks( task_id );
CREATE INDEX asignee_index ON tasks( asignee );

【问题讨论】:

    标签: java cassandra cql


    【解决方案1】:

    尝试使用 IN 而不是 = 。如果这是分区键,您将获得所需的行。另请注意,如果 in 中有很多状态,可能会导致性能下降。

    【讨论】:

    • 感谢您的回答。是的,显示的错误是:尚不支持非主键列(受让人)上的 IN 谓词。还有其他解决方法吗?
    • 如果这不起作用,那么你将不得不使用多个查询(cassandra 已知的东西)你能告诉我创建语句......只是为了检查。我查看了一些文档,至少在 cql 中直接支持 in 运算符,因此您可以使用常规语句或对语句进行多次调用。另外这里有一个类似的问题stackoverflow.com/questions/27432139/… 但它只适用于分区键,所以我需要你的 create 语句;)
    • 这不适用于二级索引,in 运算符只能使用分区键。像状态这样的索引通常也是一个坏主意,因为它们在相对较小的事物出现时有很多实例(可能只有少数状态并且它们包含很多行)。我建议您对每次访问的数据进行建模。你真的需要水平压实吗?如果您打算更新内容并且您可能打算使用“状态”字段,那就太糟糕了。
    • 好的!谢谢您的帮助!我将寻找其他选择或解决方法!
    • 基本上为您在写入时需要访问的所有内容创建和建模表。这是您需要的一个很好的介绍。 slideshare.net/pygnosis/cassandra-advanced-data-modeling 就像人们通常在开发期间使用索引一样,在生产中他们大部分时间都很麻烦。
    猜你喜欢
    • 2011-07-27
    • 2011-04-29
    • 1970-01-01
    • 2022-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-08
    相关资源
    最近更新 更多