2012-12-11 3 views
1

J'ai trois classes de domaine Auteur, Commentaire et livre:Comment paginer des requêtes mongoDB complexes dans Grails?

class Author { 
String name 
static hasMany = [books: Book, comments: Comment] 
} 

class Book { 
static belongsTo = [author: Author] 
static hasMany = [comments: Comment] 
} 

class Comment { 
static belongsTo = [book: Book, author: Author] 
} 

J'ai la requête MongoDB suivante pour trouver tous les livres qui ont des commentaires d'un auteur donné.

Comment.findAllByAuthor(author1).collect { 
     it.book 
    }.unique().findAll { 
     it != null 
} 

Comment puis-je utiliser cette requête pour la pagination, à savoir paginer sur tous les livres?

Répondre

1

Utilisez requête de critères avec livre au lieu de commenter:

def c = Book.createCriteria() 
def PaginatedBookList = c.list(max: params.max, offset: params.offset) { 
    and{ 
     eq('author',author1) 
     isNotNull('comments') 
    } 
} 
Questions connexes