无法使用PartitionKey,PrimaryKey和ClusteringOrder创建Cassandra表

时间:2016-10-14 10:19:57

标签: scala cassandra phantom-dsl

我尝试使用Phantom

创建以下Cassandra表
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>

所以我希望能够通过 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设置为anotherItemId,因为PrimaryKey复合键不会是唯一的。但是我收到以下错误:

itemId, similarity

example表明可以使用com.websudos.phantom.exceptions.InvalidClusteringKeyException: Table similarities: When using CLUSTERING ORDER all PrimaryKey definitions must become a ClusteringKey definition and specify order. PartitionKeyPrimaryKey。我做错了什么?

1 个答案:

答案 0 :(得分:0)

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

  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更快地给你一个错误。