2017-07-28 95 views
0

我想在幻像中创建一个自定义UDT。鉴于Phantom Cassandra中的自定义用户定义类型

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:我知道在phantom-pro中有一个叫做@UDT的选项可以解决这个问题。但我不想在这里使用专业版。

+0

不幸的是,您将无法使用JSON列作为UDT的替代品,因为JSON将所有内容都编码为字符串,所以幻影专业版是您唯一的选择。如果您给我发电子邮件,我很乐意帮助您了解更多信息。 – flavian

+0

@flavian很高兴与您联系。我想尝试UDT的专业版。你的邮件ID? – Akan

回答

0

这是一个解决的问题,并有一个专门用于解决UDT/UDA/UDF支持的phantom-pro模块。有关网站和GitHub文档的详细信息,只是希望在未来Google员工正在寻找答案的情况下回答此问题。