提升映射器 afterCreate 之前 afterSave

发布于 2024-09-29 04:58:25 字数 903 浏览 0 评论 0原文

你知道为什么创建对象后不调用 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")
}

提前致谢, 埃塔姆。

do you know why afterCreate methods are not invoked after creating the object? Look at this code:

val c = Company.create
println(">>> After create")
c.save

Which produces:

c: com.subeli.officebook.model.Company = 0
>>> After create
create packages
create packages
save packages

The Company model looks like this:

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

Thanks in advance,
Etam.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

青春如此纠结 2024-10-06 04:58:25

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

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

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

The "lifecycle" that is being referred to by the callbacks is the database persistence lifecycle. So, in this case, the create that is being referred to is the actual creation, or INSERT, of the object in the database. Likewise, the beforeUpdate and afterUpdate refer to the moment before and after an UPDATE statement is sent to the database.

If you need to tap into the creation of the object, you can do that through the normal Scala mechanisms of a constructor or some factory to create the objects.

While I agree that it's somewhat of a misnomer, it is a misnomer that is very common throughout the various ORM products that exist.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文