Alias della tabella unita in SQLProjection
-
20-08-2019 - |
Domanda
Ho questa domanda:
criteria = session.CreateCriteria(typeof (Building))
.CreateAlias("Estate", "estate")
.SetProjection(Projections.ProjectionList()
.Add(Property.ForName("Name"), "BuildingName")
.Add(Property.ForName("estate.Name"), "EstateName")
.Add(Projections.SqlProjection(
"(estate1_.BBRMunicipalityNumber + '-' + estate1_.BBREstateNumber + '-' + {alias}.BBRBuildingNumber)" + " as BBRNumber",
new[] { "BBRNumber" },
new[] { NHibernateUtil.String }),
"BBRNumber"))
Esiste un modo per ottenere l'alias SQL per "estate" come scrivere {estate} nella stringa SQL?{estate} non funziona.Ora ho finito per codificare l'alias nella stringa SQL, ma non sembra molto solido.
Se ho capito bene i documenti, questo dovrebbe essere possibile.Sto usando NH2.0.1.
/Asger
Soluzione
Non è una risposta diretta alla tua domanda, ma:Perché non interroghi i tre valori separatamente ed esegui la concatenazione nel codice invece di utilizzare il database per quello?
Per rispondere alla tua domanda:In Hibernate v3 (Java, scusa) c'è un getColumnAlias metodo sull'interfaccia di proiezione.Non riesco a trovare la sua controparte in NHibernate.
Saluti
Altri suggerimenti
Puoi usare {alias}: farà riferimento all'alias della proiezione corrente.