2016-11-25 1 views
1

Datastax 웹 사이트의 Cassandra java object mapper 자습서를 따르고 있습니다. 당신이 파티션 키를 제공하지 않고 카산드라에서 쿼리 할 수 ​​없습니다 것 같다 주위에이 쿼리를 실행 카산드라 파티션 키 부품이 누락되었습니다.

하는 동안 정의 접근은

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