我正在使用Datastax driver访问cassandra。我的方法采用cql string paramater
因为cql是任意的,所以我不知道cql字符串中表的primary keys

在ResultSet中,我没有找到与metadata关联的primary keys
我只能得到namesvaluesall columns

我想知道哪些列是主键。
如何programmatically获取cql中表的主键?

public Map<String, Object> search(String cql) {

    SimpleStatement statement = new SimpleStatement(cql);
    ResultSet result = session.execute(statement);
    // ...
}

最佳答案

您可以使用TableMetadata.getPrimaryKey()方法

这是一个示例演示,用于获取键空间“ test”和表ashraful_test的主键

try (Cluster cluster = Cluster.builder().addContactPoints("127.0.0.1").withCredentials("cassandra", "cassandra").build(); Session session = cluster.connect("test")) {
    System.out.println(cluster.getMetadata().getKeyspace(session.getLoggedKeyspace()).getTable("ashraful_test").getPrimaryKey());
}

关于java - 如何以编程方式知道Cassandra中表的主键,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43363861/

10-16 02:45