Ho nella mia associazione un'associazione a una collezione caricata con entusiasmo (lazy = "false" fetch = "subselect"). Come posso disattivarlo a livello di programmazione con Hibernate quando eseguo una query?Come si disattiva a livello di programmazione il recupero di eager con l'ibernazione?
risposta
In realtà, dovrebbe essere il contrario. Lo si spegne nella mappatura e lo si attiva in casi d'uso specifici con un "recupero" nella query.
Questo è il modo in cui il team di Hibernate lo vede. Non c'è modo in Hibernate per creare una richiesta che specifica "no-fetch" per una proprietà ...
Ho avuto una situazione che per ragioni storiche ha fatto desiderare di recuperare tra diverse dipendenze uno-a-molti. Nel corso degli anni molti posti sono arrivati a dipendere da questo, quindi è stato difficile spegnerlo. Tuttavia, per alcuni casi, il recupero ansioso stava ostacolando: per ogni selezione più grande sulla tabella, genererebbe 100s di piccole sottoquery per ciascuna delle raccolte di ciascuno degli oggetti. Ho trovato un modo per ovviare a questo, non proprio sovrascrivendo il recupero ansioso, ma per me altrettanto utile: semplicemente creare una singola query che fa tutti i sottofinochi in una volta. Ciò comporterà 1 query fisica al database, invece di fare in modo di andare in letargo il grafico delle dipendenze e generare 100 di query.
Così ho sostituito
Query q = session.createQuery("from Customer c");
da
Query q = session.createQuery("from Customer c " +
"left join fetch c.vats v " +
"left join fetch v.klMemos bk " +
"left join fetch bk.ferryKlMemos");
1 cliente ha molte partite IVA, il numero 1 partita IVA ha molti klmemos e così via. La vecchia situazione avrebbe prima recuperato solo i clienti e l'ibernazione avrebbe quindi avviato il recupero di ciascuna delle raccolte dipendenti una per una. Il secondo modulo carica tutto in una query nativa e Hibernate troverà tutto ciò di cui ha bisogno per popolare le raccolte desiderose nella cache degli oggetti. Spero che aiuti qualcuno. Nota: Continuo a pensare che dovresti cercare di evitare fiacchi avidamente ;-)
- 1. Attiva/disattiva la casella di controllo a livello di programmazione
- 2. Recupero di artefatti Maven a livello di programmazione
- 3. iOS disattiva vibrazione silenziosa a livello di programmazione [API privata]
- 4. Recupero nome operatore da iPhone a livello di programmazione
- 5. Come si può rilanciare il Finder a livello di programmazione?
- 6. Come si aggiunge UIButton a UIToolBar a livello di programmazione?
- 7. Eager Recupero con l'API Criteri nhibere
- 8. Come ottenere a livello di programmazione il livello audio corrente?
- 9. Rimuovere il layout a livello di programmazione
- 10. Come si ottiene l'imballaggio bidimensionale 2D a livello di programmazione?
- 11. Come disattivare o attivare "Funzionalità Windows" a livello di programmazione
- 12. Disattiva FocusVisualStyle a livello globale
- 13. Come si modifica un file .png a livello di programmazione?
- 14. , verificare a livello di programmazione
- 15. Come si chiude UISearchDisplayController a livello di programmazione?
- 16. Come si crea un UIViewController a livello di programmazione?
- 17. Come si rilevano i bot a livello di programmazione
- 18. Come si applica uno stile a livello di programmazione?
- 19. Disattiva l'avviso C++ a livello di progetto?
- 20. Come si avvia un'applicazione JNLP a livello di programmazione?
- 21. Cambio di modalità di volo a livello di programmazione
- 22. Come chiudere a livello di programmazione il vassoio di notifica
- 23. Come nascondere UITabBarController a livello di programmazione?
- 24. Come attivare "Installato" a livello di programmazione?
- 25. Eager caricamento nell'associazione nidificata di livello profondo
- 26. Recupero di un elenco di tutte le lingue di Wikipedia a livello di programmazione
- 27. Swift: come impostare il volume iphone a livello di programmazione
- 28. Ionico come tornare a livello di programmazione
- 29. Come programmare un'attività a livello di programmazione
- 30. Come aprire selezionare a livello di programmazione
Questo è quello che pensavo anch'io. Stavo solo tentando la fortuna se c'è un modo per farlo. Grazie –
Sei il benvenuto. C'è qualcos'altro di cui hai bisogno per considerare la tua domanda come risposta? Intendo accettare la risposta. – KLE