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

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top