【问题标题】:Cassandra partition key parts are missingCassandra 分区键部分丢失
【发布时间】:2017-04-10 08:21:43
【问题描述】:

我正在关注 Datastax 网站上的 Cassandra java 对象映射器教程。

在定义访问器时

@Query("SELECT * FROM testks.user ")
Result<User> getAll();

运行这个查询给我一个

com.datastax.driver.core.exceptions.InvalidQueryException: Some partition key parts are missing: id

环顾四周,如果不提供分区键,您似乎无法在 cassandra 中进行查询。是这样吗?这似乎是一个奇怪的要求。如果我想要一个全选查询,我该怎么做?

表定义为

CREATE TABLE testks.user (
id text PRIMARY KEY,
name text

)

【问题讨论】:

  • 应该可以正常工作。你是怎么运行这个的。

标签: java cassandra datastax


【解决方案1】:

你没有提供很多细节。如果您按照以下步骤操作,则不会出现任何错误

你应该像下面这样定义用户模型

用户.java

@Table(name = "user")
public class User {

    @PartitionKey
    private String id;
    private String name;

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return "User{" + "id=" + id + ", name=" + name + '}';
    }
}

如下所示的存储库

UserAccessor.java

@Accessor
public interface UserAccessor {

    @Query("SELECT * FROM user")
    Result<User> getAll();
}

这里是你如何使用存储库

Main.Java

public static void main(String[] args) {
    try (Cluster cluster = Cluster.builder().addContactPoints("127.0.0.1").withCredentials("cassandra", "cassandra").build(); Session session = cluster.connect("test")) {
        MappingManager manager = new MappingManager(session);

        UserAccessor userAccessor = manager.createAccessor(UserAccessor.class);
        System.out.println(userAccessor.getAll().all());
    }
}

【讨论】:

    猜你喜欢
    • 2015-06-21
    • 2015-02-01
    • 1970-01-01
    • 2019-10-07
    • 2017-05-22
    • 1970-01-01
    • 2018-02-14
    • 2016-12-21
    相关资源
    最近更新 更多