Cassandra 分区键部分丢失
Posted
技术标签:
【中文标题】Cassandra 分区键部分丢失【英文标题】:Cassandra partition key parts are missing 【发布时间】: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
)
【问题讨论】:
应该可以正常工作。你是怎么运行这个的。 【参考方案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());
【讨论】:
以上是关于Cassandra 分区键部分丢失的主要内容,如果未能解决你的问题,请参考以下文章