次のように、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")
}
}
バージョンごとに新しい DB 行が挿入されるようにするには、どのような変更が必要ですか?
pageId+theVersion が一意になるように何らかの制約が必要であると想定していますが、これを GORM DSL で表現する方法がわかりません。関連する DateTime 値を知らずに最新バージョンを取得するにはどうすればよいですか?
私は次のようなものを想定してPage.findByPageIdAndTheVersionLessThanEquals('uniquePageId', new DateTime())
います。これにより、1つだけでなく多くのオブジェクトが見つかると思います。に相当するものも表現できるようにしたいORDER BY theVersion DESC LIMIT 0,1