Erro de compilação de herança ilegal usando Scala 2.7.7 e LIFT 1.1-SNAPSHOT
Pergunta
Estou usando JDK 1.6.0_16 e Scala 2.7.7, compilando com maven.
Eu faço mvn clean compile
e recebo quatro erros, mas são idênticos, em modelos diferentes:
Erro] C: Usuários Proprietário Workspace ResumeApp Src Main Scala Jblack RameApp Lift Model ContactInFomodel.Scala: 13:erro:herança ilegal;
Info] autotype jblack.resumeapp.lift.model.contactinfomodel não está em conformidade com net.liftweb.mapper.crudify [long, jblack.resumeeapp.lift.model.contactinfomodel] 'stytype net.liftwebu.model.contactinfomodel]' stytype net.liftweb.model.model.contactinfomodel] 'stytype net.liftweb.model.model.contactinfomodel]' stytype net.liftweb.model.model.contactinfomodel] 'stytype net.liftweb.model.model.contactinfomodel]' stytype net.liftweb.model. Long, jblack.resumeapp.lift.model.contacti nfomodel] com jblack.resumeapp.lift.model.contactinfomodel com net.liftweb.map per.keyedmetamapper [long jblack.resumeApp.lift.model.COMPATPAPTRAPAPTER [LONGCLACKOMELOM
Info] com Crudify [Long, ContactInfomodel] {
E este é o meu código:
package jblack.resumeapp.lift.model
import net.liftweb.mapper._
object ContactInfoMetaData
extends ContactInfoModel
with KeyedMetaMapper[Long, ContactInfoModel] {
override def dbTableName = "contactinfo"
override def fieldOrder = List(key, data, display)
}
class ContactInfoModel
extends KeyedMapper[Long, ContactInfoModel]
with CRUDify[Long, ContactInfoModel] {
def getSingleton = ContactInfoMetaData
def primaryKeyField = id
object id extends MappedLongIndex(this)
object key extends MappedString(this, 100)
object data extends MappedString(this, 100)
object display extends MappedBoolean(this)
}
Não tenho certeza do que estou fazendo de errado.
Infelizmente, como instalei o plugin noturno no Eclipse, não consigo instalar o IDE 2.7.7, então só posso compilar isso com o maven.
Há algum problema com a forma como estou usando CRUDify
?
Solução
CRUDify em lift-1.1 precisa ser misturado ao objeto MetaMapper em vez da classe Mapper.Portanto, deveria funcionar com este código:
package jblack.resumeapp.lift.model
import net.liftweb.mapper._
object ContactInfoMetaData
extends ContactInfoModel
with KeyedMetaMapper[Long, ContactInfoModel]
with CRUDify[Long, ContactInfoModel] {
override def dbTableName = "contactinfo"
override def fieldOrder = List(key, data, display)
}
class ContactInfoModel
extends KeyedMapper[Long, ContactInfoModel] {
def getSingleton = ContactInfoMetaData
def primaryKeyField = id
object id extends MappedLongIndex(this)
object key extends MappedString(this, 100)
object data extends MappedString(this, 100)
object display extends MappedBoolean(this)
}
Outras dicas
Finalmente consegui que funcionasse corretamente quando voltei a usar o LIFT 1.0 em vez do 1.1.Parece que há algumas mudanças que preciso analisar para o 1.1, mas pelo menos posso continuar com meu desenvolvimento.