Как исправить ошибки «неявного представления» при обновлении версии lift-mapper? - PullRequest
0 голосов
/ 27 марта 2020

У меня есть старый проект scala liftweb. Я не смотрел на это некоторое время и использовал лифтбэк 2.6 mapper и webkit. Я хотел бы перейти с 2.6 на 3.4, и когда я обновляю свой сборочный sbt, я получаю кучу ошибок о несоответствиях типов и неявных представлениях, недоступных. Обычно это происходит, когда я использую метод mapper .find, чтобы попытаться что-то найти. Хотелось бы узнать, что я сделал не так и как это исправить?

Country.find(By(Country.name, this.country)) match {
      case Full(country) =>
        country.currency_code_id.obj match {
          case Full(currency_code) => currency_code
          case _ => defaultCurrency
        }
      case _ => defaultCurrency
    } 

где страна является полем текущего пользователя

object country extends MappedString(this, 64)
[error] C:\Users\<snip>\User.scala:700:20: No implicit view available from User.this.country.type => String.
[error]     Country.find(By(Country.name, this.country)) match {
[error]                    ^
[error] C:\Users\<snip>\User.scala:702:17: value currency_code_id is not a member of Any
[error]         country.currency_code_id.obj match {
[error]                 ^
[error] C:\Users\<snip>\User.scala:703:39: type mismatch;
[error]  found   : Any
[error]  required: com.postrope.model.CurrencyCode
[error]           case Full(currency_code) => currency_code
[error]                                       ^

Страна. scala выглядит как

object Country extends Country with KeyedMetaMapper[Long, Country] {

  private val logger = Logger(classOf[Country])
  override def dbTableName = "countries"

}

class Country extends KeyedMapper[Long, Country] {

  def getSingleton = Country // what's the "meta" server
  def primaryKeyField = id

  object id extends MappedLongIndex(this)

  object name extends MappedString(this, 512) {
    override def displayName = "Item name"
  }

  object code_2 extends MappedString(this, 2)
  object code_3 extends MappedString(this, 3);

  object alternative_spellings extends MappedString(this, 512)
  object relevancy_booster extends MappedString(this, 5)

  object currency_label extends MappedString(this, 128)
  object currency_code extends MappedString(this, 3)
  object currency_code_id extends MappedLongForeignKey(this, CurrencyCode)

  def flag_ref = "/images/flags/"+code_2+".gif"
}
...