У меня есть старый проект 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"
}