我想通过 DateTime 对 grails 域类进行版本控制,这样:
- 每个主 ID + DateTime 属性产生一个新的数据库行(即每个版本一个新的数据库行)
- 无需指定 DateTime 值即可找到最新版本
我现在对 grails 的了解有点有限,我不明白如何才能做到这一点。
以以下域类为例:
import org.joda.time.DateTime
class Page {
String pageId
DateTime theVersion
String content
static constraints = {
pageId(nullable:false, blank:false, unique:true, matches:"[a-zA-Z\\._-]+")
content(nullable:false, blank:false)
}
static mapping = {
content(type:"text")
}
}
需要进行哪些更改才能确保每个版本都插入新的数据库行?
我假设需要某种形式的约束,这样 pageId+theVersion 是唯一的,但我不知道如何在 GORM DSL 中表达这一点。在不知道相关 DateTime 值的情况下如何获得最新版本?
我正在设想这样的事情:Page.findByPageIdAndTheVersionLessThanEquals('uniquePageId', new DateTime())
我希望这会找到许多对象,而不仅仅是一个。我也希望能够表达相当于ORDER BY theVersion DESC LIMIT 0,1