Что не так с CollectionColumn?
Я пытаюсь phantom
от надомников, следящих за выложенным текстом на вики.
Я использую тестовую модель:
case class User (id: String, name: String, friends: List[String])
с:
import com.websudos.phantom.dsl._
class Users extends CassandraTable[Users, User] {
object id extends StringColumn(this) with PartitionKey[String]
object name extends StringCoumn(this)
object friends extends ListColumn[String](this)
}
ListColumn[String]()
аргумент this
помечен как ошибка, которую я полагаю, я даже не потрудился построить. ожидаемый CassandraTable[String, User]
вместо this
,
Я использую версию 1.29.6
Я использую другую версию из примера вики? Или пропустить что-то еще?
1 ответ
Это проблема выделения InteliJ. ListColumn
определяется как псевдоним типа внутри таблицы Cassandra, и для всех псевдонимов типов, которые принимают аргументы конструктора, InteliJ не способен просматривать их.
Кроме того, я бы действительно обновился до фантома 2.0.0+, просто из-за всех новых улучшений, сделанных в 2.0.0. Для исправления ошибок и сокращения объема набираемого кода требуется немало усилий:
import com.outworkers.phantom.dsl._
class Users extends CassandraTable[Users, User] {
object id extends StringColumn(this) with PartitionKey
object name extends StringCoumn(this)
object friends extends ListColumn[String](this)
}
В более поздних версиях Phantom, 2.9.x+, this
аргумент больше не требуется при использовании нового компактного DSL.
import com.outworkers.phantom.dsl._
abtract class Users extends Table[Users, User] {
object id extends StringColumn with PartitionKey
object name extends StringColumn
object friends extends ListColumn[String]
}