3

startDate および endDate プロパティを持つ Grails ドメイン オブジェクトがあります。

範囲 [startDate, endDate] が指定された日付範囲と重複するすべてのオブジェクトを見つける最良の方法は何ですか? 私は SQL でこれを行う方法を知っていますが、Grails/GORM マジックでより簡潔に行う方法があるかどうか疑問に思います。

また、endDate はオプションのプロパティです。

SQL / JPQLクエリは次のようになります

from MyObject obj where obj.startDate <= ?1 and (obj.endDate is null OR obj.endDate >= ?2)
4

1 に答える 1

7

この場合、Grails/GORM を採用する 2 つの方法:

怠惰:-

def today = new Date()
def query = MyObject.where {
    startDate <= (today - 10) && (endDate == null || endDate >= today + 10)
}
def listOfMyObjects = query.list()

熱心:-

def today = new Date()
def listOfMyObjects = MyObject.findAll {//or find{} if you need the first occurance
    startDate <= (today - 10) && (endDate == null || endDate >= today + 10)
}
于 2013-05-02T14:37:13.840 に答える