Version由DateTime格式化域类

时间:2011-02-20 17:21:33

标签: grails versioning gorm grails-domain-class

我想通过DateTime对Grails域类进行版本化,以便:

  • 每个主ID + DateTime属性都会生成一个新的DB行(即每个版本的新DB行)
  • 无需指定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

  • 的内容

1 个答案:

答案 0 :(得分:3)

  • 只需使用new Page()创建新版本,而不是get() - 将插入新记录。

为了确保独特性,加入限制: theVersion(unique: 'pageId')