Czy istnieje sposób zdefiniowania właściwego modelu dziedziczenia w Lift przy użyciu Mapper o Record Framework, gdzie znajduje się tabela dla klasy nadrzędnej i jedna tabela dla każdego syna?Dziedziczenie w Lift Mapper lub Record Framework
5
A
Odpowiedz
8
Zakładając chcesz użyć dziedziczenia, aby móc korzystać z tych samych pól odwzorowanych w każdym z podklasy, mam podchodzić to za pomocą cechę dla tych pól:
trait SuperFields[T <: Mapper[T]] {
self: T =>
object DESCRIPTION extends MappedString[T](this, 255)
object BRAND extends MappedString[T](this, 50)
// etc
}
Następnie każdy mapper/MetaMapper przedłuży SuperFields, ale definiowanie własnych tabel bazy danych i połączenia identyfikatory:
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
}
i:
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
}