私はCriteriaBuilder
のようなものでデータベース結果を改ページできたいと思っていますが、結果が一貫している必要があります。 Grailsは同じトランザクションでデータベース結果をページングしますか?
何とかパジネートと同じトランザクション内での選択を維持するための簡単な方法はあり
/私はCriteriaBuilder
のようなものでデータベース結果を改ページできたいと思っていますが、結果が一貫している必要があります。 Grailsは同じトランザクションでデータベース結果をページングしますか?
何とかパジネートと同じトランザクション内での選択を維持するための簡単な方法はあり
/あなたはScrollableResult
を使用してメモリに結果セット全体を格納するのに廃棄されたことがありますか?
ルックhere
DomainObject.createCriteria().scroll{}
はScrollableResult
あなたは現在のページ番号に基づき、基準にしたいオフセットを指定して返します。
def results = DomainClass.withCriteria {
firstResult ((currentPageNumber - 1) * itemsPerPage)
maxResults (itemsPerPage)
}
総ページ数を知るために、あなたは別のクエリが必要になります:
def numberOfPages = DomainClass.count()
if(numberOfPages != 0) numberOfPages = numberOfPages/itemsPerPage + 1
これはすべて同じトランザクションで行われますか? –
はい、指定された範囲外の行はロードされません。 – Gabriel
私はあなたが私が何を意味しているかをよく理解していません。行1〜10を取得しているときに行11が更新された場合、更新は必要ありません。 –
明らかにあなたはキャッシュ(例えばセッション)ですべての結果を格納することによって、これを行うことができ、それが台無しにしてしまいますページネーションの主な利点の1つ、つまり必要なレコードのみを取得します。良い質問、これよりもいくつかのより有用な答えを楽しみにしています。 –