0

我正在尝试使用 Phantom 创建以下 Cassandra 表

  object itemId extends StringColumn(this) with PartitionKey[String]
  object anotherItemId extends StringColumn(this) with PrimaryKey[String]
  object similarity extends DoubleColumn(this) with ClusteringOrder[Double] with Descending

所以我希望能够通过itemId. 我希望他们被订购similarity。我设置anotherItemIdPrimaryKey因为itemId, similarity复合键不会是唯一的。但我收到以下错误:

com.websudos.phantom.exceptions.InvalidClusteringKeyException: Table similarities: When using CLUSTERING ORDER all PrimaryKey definitions must become a ClusteringKey definition and specify order.

这个例子表明使用PartitionKey,PrimaryKeyClusteringOrder是可能的。我究竟做错了什么?

4

1 回答 1

1

正如错误告诉您的那样,当您指定集群顺序时,您需要为集群键的每个部分指定一个。如果该示例另有说明,则该示例是错误的,我现在将对其进行更新。

  object itemId extends StringColumn(this) with PartitionKey[String]
  object anotherItemId extends StringColumn(this) with ClusteringOrder[String] with Ascending
  object similarity extends DoubleColumn(this) with ClusteringOrder[Double] with Descending

请记住, , 因此,当您要定义排序时PRIMARY_KEY = PARTITION_KEYS + CLUSTERING_KEYS,所有聚类键或幻像调用都PrimaryKey需要成为。ClusteringOrder

这是 Cassandra 施加的限制,幻影只是比 Cassandra 更快地给你一个错误。

于 2016-10-14T10:41:21.233 回答