2010-09-01 9 views

Antwort

8

Angenommen, Sie wollen Vererbung verwenden zu können, die gleichen zugeordneten Felder in jeder der Unterklassen verwenden, habe ich diese genähert durch ein Merkmal für diese Felder verwendet:

trait SuperFields[T <: Mapper[T]] { 
    self: T => 
    object DESCRIPTION extends MappedString[T](this, 255) 
    object BRAND extends MappedString[T](this, 50) 
    // etc 
} 

dann jeden Mapper/MetaMapper wird verlängern Superfelder, aber ihre eigene Datenbanktabelle und Verbindungskennungen definieren:

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 
} 

und:

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 
} 
Verwandte Themen