【问题标题】:Creating Model for Cassandra using Phantom DSL使用 Phantom DSL 为 Cassandra 创建模型
【发布时间】:2019-04-12 21:37:26
【问题描述】:

我正在阅读this piece of source code

这看起来不错,但是如果字段不是艺术家,而是“艺术家”,而艺术家是 cassandra 中的 list<text>,该怎么办?

我发现这篇文章谈到了使用 ListColumn

https://github.com/websudos/phantom/wiki/Collection-columns

但我不确定您将如何在 ListColumn 上定义索引

  object genre extends ListColumn(this) with Index[List[String]]

上面的行没有编译。

【问题讨论】:

    标签: scala phantom-dsl


    【解决方案1】:

    据我所知,您只能在 Set 列上执行包含二级索引的查询,而不是 List。

    这就是你所做的:object genre extends SetColumn[Table, Record, Int](this) with Index[Set[Int]]TableRecord 两种类型必须与您在上面扩展 CassandraTable 时提供的内容相匹配,如下所示:

    class MyTable extends CassandraTable[MyTable, MyRecord] {
      object genre extends SetColumn[MyTable, MyRecord, Int](this) with Index[Set[Int]]
    }
    

    希望这是有道理的。也要小心 ListColumn,所有集合列都需要 TableTypeRecordType 参数。

    更新

    在较新版本的 phantom 中,您无需提供表和记录的类型。只需执行以下操作:

    class MyTable extends CassandraTable[MyTable, MyRecord] {
      object genre extends SetColumn[Int](this) with Index[Set[Int]]
    }
    

    查看this test 获取有关使用索引集合的示例,然后查看this table 获取有关如何定义此类表的示例。

    问候。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-04-10
      • 1970-01-01
      • 2017-02-19
      • 2017-05-24
      • 1970-01-01
      • 2015-09-06
      • 2016-09-01
      • 2016-09-11
      相关资源
      最近更新 更多