我正在尝试在 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 );
答案 0 :(得分:2)
尝试使用IN而不是=。如果这是分区键,您将获得所需的行。另请注意,如果有很多状态,可能会导致性能下降。