[英]Phantom DSL and Cassandra custom column type
我已經定義了一個自定義的Cassandra類型和一個表,例如:
CREATE TYPE my.usertype (
id text,
firstname text,
lastname text
);
CREATE TABLE mytable (
user frozen <usertype>,
...,
PRIMARY KEY(user)
);
如何在Scala的Cassandra表定義中定義此用戶類型?
class MyTable extends CassandraTable[X, Y] {
object user extends UserColumn(this) with PartitionKey[User]
^^^^^??? ^^^???
如何為UserType
實現自定義UserColumn
? 我檢查了Phantom代碼以實現列的實現,但是任何示例和/或解釋都很好。
因此,根據該庫的作者所說,phantom的開源版本不支持用戶定義的類型: https : //github.com/outworkers/phantom/issues/496
但是,您可以通過擴展MapColumn來部分克服該問題,如下所述: 凍結類型的Phantom-DSL cassandra 。 當然,這不是完美的,例如,您將無法生成用於架構創建的CQL,而您將不得不執行一些手動管道。
所以或多或少會像這樣:
class MyTable extends CassandraTable[MyTable , Y] {
object user extends MapColumn[MyTable , Y, String, String](this) with PartitionKey[MapColumn...]
僅在phantom pro中。
@Udt case class User(
id: String,
firstname: String,
lastname: String
)
然后使用UDTColumn
:
class MyTable extends Table[MyTable , Y] {
object user extends Col[User] with PartitionKey
}
這將為您提供自動的模式生成以及其他功能,包括UDT的自動初始化。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.