2016-11-25 74 views
1

我正在關注Datastax網站上的Cassandra java對象映射器教程。Cassandra分區關鍵部件丟失

,並在定義存取

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

運行此查詢給我一個

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

環顧四周,似乎可以在卡桑德拉不提供分區鍵查詢不到。是這樣嗎?這似乎是一個奇怪的要求。如果我想要選擇所有查詢,我將如何去做這件事?

表被定義爲

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

+0

應該正常工作。你如何運行這個。 – Mritunjay

回答

0

以下是完整的工作代碼。

User.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()); 
    } 
}