Author{
String name;
List<Book> books
static hasMany= [books: Book]
}
Book{
int number_of_pages;
String name;
}
我要查詢和通過number_of_pages
單向一對多關係查詢格姆的Grails
Author{
String name;
List<Book> books
static hasMany= [books: Book]
}
Book{
int number_of_pages;
String name;
}
我要查詢和通過number_of_pages
單向一對多關係查詢格姆的Grails
使用HQL排序的特定作者,你可以做取前10名的書:
def query = "select book from Author author join author.books book where author=:author order by book.number_of_pages"
def books = Author.executeQuery(query, [author: author], [max: 10])
注意:您應該將number_of_pages
重命名爲numberOfPages
。
它說'不能解決財產:書籍的作者',我把它放在getBooks()方法在作者 – user602865
我建議您通過添加作者作爲Book的屬性使作者對Book可見。
這樣,你可以這樣做:
Book.findAll(sort: 'number_of_pages', max: 10) { author.id == myAuthorVariable.id }
雖然,還有一個更好的方法。如果你讓作者實現equals方法,你可以寫:
Book.findAll(sort: 'number_of_pages', max: 10) { author == myAuthorVariable }
此外,您可以設置一個「偏移」,這就是給我10本書從X寄存器開始。這是分頁有用:
Book.findAll(sort: 'number_of_pages', max: 10, offset: 50) { author == myAuthorVariable }
作者平等的實現可能是:
def boolean equals(author) {
if (this.is(author)) return true
if (!author || getClass() != author.class) return false
return this.name == author.name
}
我不能添加它,因爲組織是一個實體也有書籍 – user602865
任何理由/ s到使用下劃線代替駝峯在NUMBER_OF_PAGES? Java中的慣例(因此在常規中)是駝峯式的。 –
這只是一個例子 – user602865