【发布时间】:2011-02-20 17:21:33
【问题描述】:
我想通过 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的等价物
【问题讨论】:
标签: grails versioning grails-orm grails-domain-class