Nasıl katılır ve sıra tabanlı ile uyku ayrı sonuçları sınırlama (disk belleği) almak için?
Disk belleği satır tabanlı kullanarak (örneğin: setFirstResult(5)
setMaxResults(10)
) diğer tablolar için birleşimler olan Hazırda bir Ölçüt sorgu sınırlama uygulamak için çalışıyorum.
Anlaşılır, veri rastgele kesilmiş oluyor; ve bunun sebebi here açıklanmıştır.
Bir çözüm olarak, sayfa "ikinci bir sql select" a katılmak yerine. bir kullanarak önerir
Nasıl varolan kriterler benim sorgu katıldı createAlias()
kullanarak) bir iç içe select yerine kullanmak için dönüştürebilirsiniz?
CEVAP
Farklı kimlikleri yerine farklı sulu nesnelerin listesini bir liste talep ederek istenilen sonucu elde edebilirsiniz.
Ekle kriterlerine bu sadece:
criteria.setProjection(Projections.distinct(Projections.property("id")));
Şimdi size göre sonuçlar doğru sayıda alırsınız satır tabanlı sınırlayıcı. Bunun işe yaramasının nedeni, projeksiyon farklılığı kontrol yapacak olmasıdırbir parçası olaraksql farklılığı için sonuçları filtrelemek için, bir ResultTransformer ne yerine sorgusonrasql sorgu yapıldı.
Nesnelerin listesini almak yerine, şimdi hazırda nesneleri daha sonra nemlendirmek için kullanabileceğiniz kimlikleri bir listesini alacak dikkati çekiyor.
Nasıl Python ile şimdiki zaman almak i...
Nasıl bir liste boyutunu almak için...
Nasıl Gıt mevcut şube adı almak için?...
Nasıl MySQL kullanıcı hesaplarının bir...
Nasıl ASP.NET MVC [HandleError] öznite...