Я бы хотел создать класс домена Grails DateTime таким образом, чтобы:
- каждое первичное свойство ID + DateTime приводит к новой строке БД (т. Е. Новой строке БД для каждой версии)
- новейшую версию можно найти без указания значения DateTime
Мои знания о Граале сейчас немного ограничены, и я не понимаю, как мне этого добиться.
Рассмотрим следующий класс домена в качестве примера:
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