gpt4 book ai didi

scala - 如何使用 SORM 在我的模型中包含时间戳(created_at 和 updated_at)?

转载 作者:行者123 更新时间:2023-12-04 05:21:20 43 4
gpt4 key购买 nike

ActiveRecord 处理时间戳做这样的事情:

  • 插入数据? created_at 已定义
  • 更新数据? updated_at 被重新定义

  • 我将如何使用 SORM 做到这一点?

    最佳答案

    乍一看,这样的事情可以工作:

    import org.joda.time._
    object Db extends Instance (entities = ...) {
    override def save [T <: AnyRef : TypeTag] ( v : T )
    = v match {
    case v : Artist with Persisted =>
    super.save( v.copy( updatedAt = DateTime.now() ) )
    case v : Artist =>
    super.save( v.copy( createdAt = DateTime.now() ) )
    // ... so on for other entities
    case v =>
    super.save(v)
    }
    }

    但是,您将如何从头开始创建这些艺术家实例?如果这些日期字段被分配困惑 null s 或 null-ish 日期值,或者它们是否可能被包裹在 Option 中?好吧,其中任何一个都可以解决问题,但这是另一种选择:
    import org.joda.time._
    case class Artist
    ( name : String,
    updatedAt : DateTime = DateTime.now(),
    createdAt : DateTime = DateTime.now() )

    object Db extends Instance (entities = ...) {
    override def save [T <: AnyRef : TypeTag] ( v : T )
    = v match {
    case v : Artist with Persisted =>
    super.save( v.copy( updatedAt = DateTime.now() ) )
    case v =>
    super.save(v)
    }
    }

    我得告诉你整个问题对我来说不是很自然。我无法想象那种行为会有好处的场景。但话又说回来,我已经向您展示了选项。

    关于scala - 如何使用 SORM 在我的模型中包含时间戳(created_at 和 updated_at)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13659190/

    43 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com