C'è un modo per definire un modello di eredità corretto in Lift usando Mapper o Record Framework dove c'è una tabella per la classe genitore e una tabella per ogni figlio?Ereditarietà in Lift Mapper o Record Framework
5
A
risposta
8
Supponendo che si desidera utilizzare l'ereditarietà per essere in grado di utilizzare gli stessi campi mappati in ciascuna delle sottoclassi, ho affrontato questo utilizzando un tratto di quei campi:
trait SuperFields[T <: Mapper[T]] {
self: T =>
object DESCRIPTION extends MappedString[T](this, 255)
object BRAND extends MappedString[T](this, 50)
// etc
}
Poi ogni Mapper/MetaMapper si estenderà supercampi, ma definire i propri tabella di database e di connessione identificatori:
class Product extends Mapper[Product] with SuperFields[Product] {
override def getSingleton = Product
}
object Product extends Product with MetaMapper[Product] {
override def dbTableName = "PRODUCT"
override def dbDefaultConnectionIdentifier = SomeConnection
}
e:
class Service extends Mapper[Service] with SuperFields[Service] {
override def getSingleton = Service
}
object Service extends Service with MetaMapper[Service] {
override def dbTableName = "SERVICE"
override def dbDefaultConnectionIdentifier = SomeOtherConnection
}