1

你知道为什么创建对象后不调用 afterCreate 方法吗?看看这段代码:

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")
}

在此先感谢,埃塔姆。

4

1 回答 1

1

回调所指的“生命周期”是数据库持久性生命周期。因此,在这种情况下,所引用的创建是数据库中对象的实际创建或插入。同样, beforeUpdate 和 afterUpdate 指的是 UPDATE 语句发送到数据库之前和之后的时刻。

如果您需要利用对象的创建,您可以通过构造函数或某些工厂的正常 Scala 机制来创建对象。

虽然我同意这有点用词不当,但它在存在的各种 ORM 产品中很常见。

于 2010-10-29T06:31:41.440 回答