Phantom Cassandra中的自定义用户定义类型

时间:2017-07-28 07:23:39

标签: scala cassandra phantom-dsl

我正在尝试用幻像创建一个自定义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":{}}

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

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

1 个答案:

答案 0 :(得分:0)

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