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.

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top