2016-06-03 2 views
0

У меня есть домен ссылочного сам какРазбивка с коллекцией

User{ 

static hasMany=[friends:User] 

} 

я могу получить все друг для пользователя, как это:

user.friends 

Но мне нужно применить нумерацию страниц, где я бег из идея, любое предложение?

ответ

2

Вы можете использовать критерии для извлечения объектов пользователя. Благодаря этому, вы сможете использовать нумерацию страниц:

int maxElementsPerPage = 15  
User.createCriteria().list(offset: currentPage * maxElementsPerPage, 
          max: maxElementsPerPage) { 
    // condition here 
    'in' ('id', user.friends*.id) 
    // I'm not sure if you need to put '*.id' 
} 

Вам просто нужно, чтобы увеличить «CurrentPage», чтобы иметь элементы для следующей страницы.

Для критериев Grails, вы должны смотреть на official Grails criteria documentation

Или, вы можете использовать Grails тег внутри GSP (который будет обрабатывать все):

<g:paginate controller="user" action="list" total="${userCount}" /> 

Подробнее here.

2

Если у вас есть коллекция внутри класса домена, что вам нужно постраничной, вы должны сделать это однонаправленный один-к-одному:

class User { 
    static belongsTo = [ friend:User ] 
} 

иначе GORM придется кэшировать hasMany идентификаторов.

Тогда запрос будет так же просто, как:

def friends = User.findAllByFriend(user, [ max:100, offset:0 ]) 
Смежные вопросы