我尝试使用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.
,PartitionKey
和PrimaryKey
。我做错了什么?
答案 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更快地给你一个错误。