मैं पहले से ही निम्नलिखित कोड का उपयोग कर पृष्ठांकन को लागू किया है किया है:हाइबरनेट मानदंड के साथ पृष्ठांकन और DISTINCT_ROOT_ENTITY
public Paginacao<Anuncio> consultarPaginado(int pagina, Integer cidadeId) {
Criteria criteria = this.sessionFactory.getCurrentSession().createCriteria(Anuncio.class);
criteria.add(Restrictions.eq("ativo", true));
criteria.add(Restrictions.eq("statusLiberacao", AnunciosUtil.STATUS_ANUNCIO_LIBERADO));
criteria.add(Restrictions.eq("statusVendaAnuncio", AnunciosUtil.STATUS_VENDA_ANUNCIO_DISPONIVEL));
if (cidadeId != null) {
criteria.add(Restrictions.eq("cidade.id", cidadeId));
}
criteria.addOrder(Order.desc("dataPostagem"));
criteria.setProjection(Projections.rowCount());
Long count = (Long) criteria.uniqueResult();
Paginacao<Anuncio> paginacao = new Paginacao<Anuncio>();
int qtdPaginas = (count.intValue()/7) + 1;
paginacao.setQtdPaginas(qtdPaginas);
criteria.setProjection(null);// reseta a criteria sem a projeção
criteria.setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY);
if (pagina > qtdPaginas) {
pagina = qtdPaginas;
}
pagina = pagina - 1;
criteria.setFirstResult(pagina * ConstantesGenericas.MAXIMO_OBJETOS_RETORNADOS);
criteria.setMaxResults(ConstantesGenericas.MAXIMO_OBJETOS_RETORNADOS);
paginacao.setRegistros(criteria.list());
return paginacao;
}
जब मैं SQL क्वेरी मैन्युअल रूप से बनाने और डेटाबेस में जमा करें, मैं 8 परिणाम नहीं। हालांकि, जब मैं उपरोक्त कोड आज़माता हूं, तो परिणाम ट्रान्सफॉर्मर को DISTINCT_ROOT_ENTITY पर सेट करने से पहले 8 परिणाम प्राप्त करें (बिना विशिष्ट के) और इसे सेट करने के बाद मुझे 4 परिणाम मिलते हैं। लेकिन मुझे 8 परिणाम प्राप्त करना चाहिए (DISTINCT का उपयोग करके), क्योंकि जब मैं बिना किसी भिन्न के मैन्युअल रूप से एसक्यूएल बनाता हूं तो मुझे 11 परिणाम मिलते हैं और जब मैं DISTINCT का उपयोग करता हूं तो मुझे सही तरीके से मिलता है, 8 परिणाम परिणाम देते हैं।
उपरोक्त कोड में क्या गलत है?
मैं गंभीरता से इच्छा अपने चर नाम अभी भी पुर्तगाली :) –
में नहीं थे यह काम नहीं कर सकते .. सभी * ToMany संग्रह FetchMode.SELECT जोड़ने की कोशिश की, लेकिन अभी भी परिणाम के बिना .. – nKognito
धन्यवाद! यह न केवल मेरे लिए काम करता है बल्कि मैं कुछ दिनों के लिए समाधान की तलाश में हूं। आपको समाधान और स्पष्टीकरण मिला! मुझे वास्तव में वास्तव में यह पोस्ट पसंद आया !!! – Alexandros