2012-02-14 6 views
5

Truy vấn grails sau sẽ hạn chế số lượng kết quả đến 3 và sau đó sắp xếp những bằng id:Trong một GORM findBy * truy vấn, làm thế nào tôi có thể sử dụng "loại" trước khi hạn chế sử dụng "tối đa"

def results = Domain.findAllByFoo(foo, [sort: 'id', order: 'desc', max: 3])

vì vậy, đây sẽ trở lại id từ 1 đến 3, và sau đó đảo ngược thứ tự của chúng, do đó

results*.id == [3,2,1]

có cách nào để sắp xếp đầu tiên, và giới hạn sau, do đó

012.

results*.id == [99,98,97]

workaround hiện tại của tôi là thế này:

if (results.size() > max) results = results[0..<max]

+0

Bạn có chắc chắn rằng 'findAllBy' sắp xếp sau giới hạn không? Bạn sử dụng cơ sở dữ liệu nào? –

+0

hmmm, tôi đã gặp nó trong một thử nghiệm đơn vị. có thể là một lỗi trong cơ sở dữ liệu thử nghiệm đơn vị mới mocking? – c089

+0

Bạn có thể vui lòng đặt sql được tạo bởi HQL đó không? Chúng tôi đang sử dụng hql tương tự trong dự án của chúng tôi và nó hoạt động tốt. BTW -Chúng tôi đã viết trường hợp kiểm tra tích hợp để kiểm tra chức năng này – Saurabh

Trả lời