为一个或多个@Params创建Cassandra @Query

时间:2017-02-02 13:54:16

标签: java cassandra cql

我正在尝试在 cassandra 数据库上执行 SELECT ,使用数据存储区驱动程序 strong> Java App。

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

@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 );

1 个答案:

答案 0 :(得分:2)

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