你知道为什么在创建对象后没有调用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")
}
提前致谢, 艾格。
答案 0 :(得分:1)
回调引用的“生命周期”是数据库持久性生命周期。因此,在这种情况下,所引用的create是数据库中对象的实际创建或INSERT。同样,beforeUpdate和afterUpdate引用UPDATE语句发送到数据库之前和之后的那一刻。
如果您需要使用对象的创建,可以通过构造函数或某个工厂的常规Scala机制来创建对象。
虽然我同意这有点用词不当,但在现有的各种ORM产品中,这是一种非常普遍的误称。