【问题标题】:Custom user defined types in Phantom CassandraPhantom Cassandra 中的自定义用户定义类型
【发布时间】:2018-01-04 03:46:12
【问题描述】:

我正在尝试在幻像中创建自定义 UDT。

case class CreationTrack(source_ip: String, created_by: String, created_at: UUID)

abstract class Registrations extends CassandraTable[Registrations, CreationTrack] with RootConnector {
 object creation_details extends JsonColumn[CreationTrack](this){
    override def fromJson(obj: String): CreationTrack = {
      JsonParser.parse(obj).extract[CreationTrack]
    }
    override def toJson(obj: CreationTrack): String = {
      compactRender(Extraction.decompose(obj))
    }
  }
}

输入给定:

CreationTrack("192.123.4.5","arun", UUIDs.timeBased())

但我得到了,

Invalid STRING constant{"source_ip":"192.123.4.5","created_by":"arun","created_at":{}}

我认为 UUID 类型转换对 json 转换存在问题。但我被困在这里。有什么帮助吗? 提前致谢!

PS:我知道 phantom-pro 中有一个名为 @UDT 的选项可以解决此问题。但我不想在这里使用专业版。

【问题讨论】:

  • 不幸的是,您将无法使用 JSON 列作为 UDT 的替代品,因为 JSON 将所有内容编码为字符串,因此 phantom-pro 是您唯一的选择。如果您给我发电子邮件,我很乐意帮助您了解更多相关信息。
  • @flavian 很高兴与您联系。我想试试 UDT 的专业版。您的邮件 ID?

标签: scala cassandra phantom-dsl


【解决方案1】:

这是一个已解决的问题,并且 phantom-pro 中有一个专门用于解决 UDT/UDA/UDF 支持的模块。网站和 GitHub 文档上的详细信息,只是希望这个问题得到解答,以防未来的 Google 员工正在寻找答案。

【讨论】:

    猜你喜欢
    • 2017-02-19
    • 1970-01-01
    • 2014-12-31
    • 1970-01-01
    • 1970-01-01
    • 2016-09-01
    • 2015-06-21
    • 2018-01-11
    • 2016-03-21
    相关资源
    最近更新 更多