La implementing-result-paging-in-hibernate-getting-total-number-of-rows domanda innescare un'altra domanda per me, su qualche implementazione preoccupazione:Java codifica best practice per il riutilizzo di parte di una query per contare
Ora sai di avere di riutilizzare parte della query HQL fare il conteggio, come riutilizzare in modo efficiente?
Le differenze tra le due query HQL sono:
- la selezione è
count(?)
, al posto del POJO o proprietà (o una lista di) - i recuperi non dovrebbe succedere, in modo da alcune tabelle non dovrebbero essere unito
- il
order by
dovrebbe scomparire
esistono altre differenze?
Avete codifica migliori pratiche per raggiungere questo obiettivo il riutilizzo efficiente (riguarda: lo sforzo, la chiarezza, performance)?
Esempio per una semplice query HQL:
select a from A a join fetch a.b b where a.id=66 order by a.name
select count(a.id) from A a where a.id=66
AGGIORNATO
Ho ricevuto risposte su:
- utilizzando Criteri (ma usiamo HQL per lo più)
- manipolare la stringa query (ma tutti sono d'accordo sembra complicato e non molto sicuro)
- avvolgendo la query, basandosi su ottimizzazione del database (ma c'è la sensazione che questo non è sicuro)
Speravo che qualcuno avrebbe dato le opzioni lungo un altro percorso, più legato alla concatenazione delle stringhe.
È possibile creare entrambe le query HQL utilizzando le parti comuni?
+1 Grazie per queste precisioni sulla manipolazione della query. Grazie anche per l'eccellente precisione che ** una query di conteggio dovrebbe essere eseguita solo dopo una prima query **. – KLE
Ho aggiornato la mia domanda, vorresti fare un'altra risposta relativa alla nuova parte? Mi sono piaciuti molti dei tuoi post di altri, e tu sei un esperto di java :-) ... – KLE
Grazie :-) Ho aggiornato la mia risposta sopra. – ChssPly76