Что не так с 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]
}
Другие вопросы по тегам