ОБНОВЛЕНИЕ: Изменены образцы, чтобы отразить мою текущую ситуацию
Довольно новый для поднятия, и я пытаюсь создать модель для моего приложения.Поскольку я хочу сохранить вещи в духе DRY, я хочу использовать миксины черт, чтобы указать некоторые поля в моей модели.Например, у меня есть черта Person
, которую я смешиваю с моим Employee
классом:
trait Person[T <: LongKeyedMapper[T]] extends LongKeyedMapper[T]{
self: T =>
object firstName extends MappedString[T](this, 50)
object lastName extends MappedString[T](this, 50)
object civicRegNumber extends MappedString[T](this, 12)
}
class Employee extends IdPK with OneToMany[Long, Employee] with Person[Employee] {
def getSingleton = Employee
object contactInfos extends MappedOneToMany(EmployeeContactInfo, EmployeeContactInfo.person)
}
object Employee extends Employee with LongKeyedMetaMapper[Employee]
Как видно, у меня есть контактная информация, отображающая множество на одно в Employee.Это выглядит так:
trait PersonContactInfo[T <: LongKeyedMapper[T],P <: Person[P]] extends LongKeyedMapper[T] {
self: T =>
object email extends MappedEmail[T](this, 80)
def personMeta:P with LongKeyedMetaMapper[P]
object person extends LongMappedMapper[T,P](this, personMeta)
}
class EmployeeContactInfo extends IdPK with PersonContactInfo[EmployeeContactInfo, Employee] {
def getSingleton = EmployeeContactInfo
val personMeta = Employee
}
object EmployeeContactInfo extends EmployeeContactInfo with LongKeyedMetaMapper[EmployeeContactInfo]
Кажется, это работает, но я бы хотел переместить объект contactInfos в мою черту Person
.Однако я не могу понять, как этого добиться ... Возможно ли вообще наследовать сопоставления OneToMany от признаков?Любая помощь приветствуется!