Levante o Mapper Aftercreate antes de depois
-
26-09-2019 - |
Pergunta
Você sabe por que os métodos pós -create não são chamados após a criação do objeto? Veja este código:
val c = Company.create
println(">>> After create")
c.save
Que produz:
c: com.subeli.officebook.model.Company = 0
>>> After create
create packages
create packages
save packages
O modelo da empresa se parece com o seguinte:
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")
}
Agradecemos antecipadamente, Etam.
Solução
O "ciclo de vida" que está sendo referido pelos retornos de chamada é o ciclo de vida da persistência do banco de dados. Portanto, neste caso, a criação que está sendo referida é a criação real, ou inserir, do objeto no banco de dados. Da mesma forma, o Antes Update e o AfterUpdate se referem ao momento anterior e depois que uma instrução de atualização é enviada ao banco de dados.
Se você precisar explorar a criação do objeto, poderá fazer isso através dos mecanismos normais de Scala de um construtor ou de alguma fábrica para criar os objetos.
Embora eu concorde que é um nome impróprio, é um nome impróprio que é muito comum em todos os vários produtos ORM que existem.