แบบสอบถามที่มีชื่อสำหรับวันที่ (เดือนและปี)

ฉันมีคลาสโดเมนดังต่อไปนี้:

class Car{

 int hp
 Date registrationDate

}

ตอนนี้สิ่งที่ฉันพยายามทำคือสร้างแบบสอบถามที่มีชื่อที่ช่วยให้ฉันทำสิ่งนี้ได้:

Car.getCarsByYear(2011)

และ

Car.getCarsByYearMonth(2011,11)

ฉันไม่แน่ใจว่าอันที่สองเป็นไปได้หรือว่าวิธีเดียวที่จะทำได้คือการมี 2 คิวรีที่มีชื่อ 1 อันสำหรับปีและอีกอันสำหรับเดือน

คุณจะระบุเดือน/ปีสำหรับวันที่ในแบบสอบถามที่มีชื่อได้อย่างไร ถ่ายรูปมาหลายรูปแล้วลองกูเกิ้ลดู แต่ก็ไม่เจออะไรเลย


person marko    schedule 05.03.2012    source แหล่งที่มา


คำตอบ (1)


คุณสามารถส่งพารามิเตอร์ไปยังการสืบค้นที่มีชื่อของคุณ:

    static namedQueries = {
    getCarsByYearMonth { int year, int month ->
        println "year:"+year
        println  "month:"+month
        def now = Date.parse("yyyy-MM", "${year}-${month}")
        eq 'registrationDate', now
    }
}

และเรียกมันว่า:

 def search() {
    render Car.getCarsByYearMonth(2012,2).list()
}
person Alidad    schedule 05.03.2012
comment
หมายเหตุประการหนึ่ง: คุณอาจต้องการใช้ฟิลด์จากคำถามของมาร์โค registrationDate แทนที่จะเป็น date ทั่วไป เนื่องจากอาจทำให้อ่านสับสนเล็กน้อย - person OverZealous; 06.03.2012
comment
ฉันคิดว่าเขาต้องการรถที่มีเดือน/ปีเท่ากับค่าพารามิเตอร์ไม่เกิน - person Dónal; 06.03.2012