0
data class User(
    var name: String? = null,
    val mobile: String,
    var email: String? = null
) : Principal, BaseTable()

理想情况下,我想要的是具有用于生成 lastModified、createdAt 字段的通用逻辑以驻留在某个通用类中(例如:BaseTable)

abstract class BaseTable {
    private lateinit var createdAt: DateTime
    private lateinit var lastModified: DateTime
}

它将充当我所有模型的父级,因为我想要每个表中的 createdAt 和 lastModified 字段。

需要明确的是,这是我想要的行为:

  • createdAt:只存储行创建的时间,不再更改
  • lastModified:每次更新一行时,也更新该字段。创建新行时,createdAt = lastModified。

有没有办法使用 Kotlin (Jetbrains) Exposed SQL 库来做到这一点?

4

2 回答 2

0

createdAt如果有clientDefault功能:

abstract class BaseTable : IntIdTable() {
   val createdAt = datetime("created_at").clientDefault { DateTime.now() }
}

不过,不知道有任何解决方案lastModified。我在DAO中手动设置它。

于 2019-12-31T15:07:52.623 回答
0

花了一天时间寻找解决方案

这是一个可能的食谱

我自己删除了所有的抽象并在我需要的地方实现了钩子。

于 2021-08-10T23:01:49.867 回答