Esiste un modo per utilizzare un risultato ICriteria come "base" per una successiva query di criteri?Esegui nHibernate icriteria sul risultato di un'altra query (due query distinte)
Per esempio se mi piacerebbe creare una query
SELECT department_id, sum(cost) AS total
FROM payment
GROUP BY payment.department_id
memorizzare il risultato come query0
, e quindi eseguire la query
SELECT department.name, total
FROM department, query0
JOIN LEFT ON department.id=query0.id
WHERE total > 3
Non voglio avere un unico enorme di query eseguita tutto in una volta (che sarebbe il risultato della creazione di un ICriteria con sottoquery). Nota che ho una selezione/restrizione su un risultato della prima query e allo stesso tempo includo una delle sue colonne nella proiezione della seconda query.
Il criterio viene generato dinamicamente utilizzando le stringhe per identificare le classi.
Im non familir con ICriteria, ma couldnt la prima query serve come base o rootquery e quindi avvolge una nuova selezione attorno ad essa ?? –
Forse dovresti semplicemente filtrare department_ids della tua query0 con un totale> 3 e poi ottenere i departements con una clausola IN nella tua seconda query. Bel post da Ayende su questo problema quando la lista IN è veramente grande: http://ayende.com/blog/2583/nhibernates-xml-in così come un link non interrotto a XmlIn.cs: http: // code. google.com/p/hornget/source/browse/trunk/package_tree/frameworks/rhino.tools/rhino/patch/commons/Rhino.Commons.NHibernate/NHibernate/XmlIn.cs?spec=svn78&r=78 – jbl
@Kay Nelson Questo è esattamente l'approccio dei criteri separati con una query unita ma singola. @ jbl Avrei ancora bisogno del totale nella proiezione. E questa soluzione funzionerebbe solo in questo caso particolare (es. Non se il join è finito 'department.id = query0.id AND department.XYZ == query0.XYZ') – Dani