Поднимите Mapper Aftercreate перед послепродажностью
-
26-09-2019 - |
Вопрос
Знаете, почему методы послекрещения не вызывают после создания объекта? Посмотрите на этот код:
val c = Company.create
println(">>> After create")
c.save
Который производит:
c: com.subeli.officebook.model.Company = 0
>>> After create
create packages
create packages
save packages
Модель компании выглядит так:
object Company extends Company with LongKeyedMetaMapper[Company] with CRUDify[Long, Company] {
override def dbTableName = "company"
override def beforeCreate = createPackages _ :: super.beforeCreate
override def afterCreate = createPackages _ :: super.afterCreate
override def afterSave = savePackages _ :: super.afterSave
override def afterUpdate = savePackages _ :: super.afterUpdate
private def createPackages(c: Company): Unit = println("create packages")
private def savePackages(c: Company): Unit = println("save packages")
}
Спасибо заранее, этама.
Решение
«Жизненный цикл», который называется обратными вызовами, является жизненный цикл сохранения базы данных. Таким образом, в этом случае создается создание, которое называется фактическим созданием или вставляет объект в базе данных. Аналогично, FOREUPDATE и AFTOUPDATE обращаются к моменту до и после отправки оператора обновления в базу данных.
Если вам нужно подключить к созданию объекта, вы можете сделать это через обычные SCALA-механизмы конструктора или некоторых заводов для создания объектов.
Пока я согласен с тем, что это несколько неправильно, это неправильно, который очень распространен на протяжении различных продуктов ORM, которые существуют.