2016-10-10 48 views
0

我已經定義了一個自定義的卡桑德拉式和一張桌子,e.g:幻象DSL和卡桑德拉自定義字段類型

CREATE TYPE my.usertype (
    id text, 
    firstname text, 
    lastname text 
); 


CREATE TABLE mytable (
    user frozen <usertype>, 
    ..., 
    PRIMARY KEY(user) 
); 

我如何定義在斯卡拉卡桑德拉表定義這種用戶類型?

class MyTable extends CassandraTable[X, Y] { 
    object user extends UserColumn(this) with PartitionKey[User] 
         ^^^^^???       ^^^??? 

我怎樣才能實現對UserType定製UserColumn?我檢查了Phantom代碼的列實現,但任何示例和/或解釋都會很好。

回答

1

在幻象只有親,這將提供給訂閱在2個星期時間:

@Udt case class User(
    id: String, 
    firstname: String, 
    lastname: String 
) 

然後使用UDTColumn

class MyTable extends CassandraTable[MyTable , Y] { 
    object user extends UDTColumn[MyTable, Y, User](this) with PartitionKey[User] 
} 

這會給你自動模式生成,無論el包括自動初始化您的UDT。

1

所以根據圖書館的作者,用戶定義類型是幻象的開源版本不支持:https://github.com/outworkers/phantom/issues/496

但是,您可能能夠部分地克服延長MapColumn,因爲它是描述如下: Phantom-DSL cassandra with frozen type。當然,這並不完美,例如您將無法爲模式創建生成CQL,並且您將不得不執行一些手動管道。

所以或多或少會喜歡這樣說:

class MyTable extends CassandraTable[MyTable , Y] { 
    object user extends MapColumn[MyTable , Y, String, String](this) with PartitionKey[MapColumn...] 
+0

謝謝您指向公關! – Bruckwald