Alias de la table jointe dans SQLProjection
-
20-08-2019 - |
Question
J'ai cette requête :
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"))
Existe-t-il un moyen d'obtenir l'alias SQL pour « domaine », comme en écrivant {estate} dans la chaîne SQL ?{domaine} ne fonctionne pas.Maintenant, j'ai fini par coder en dur l'alias dans la chaîne SQL, mais cela ne semble pas très solide.
Si je comprends bien la documentation, cela devrait être possible.J'utilise NH2.0.1.
/Asger
La solution
Ce n'est pas une réponse directe à votre question, mais :Pourquoi n'interrogez-vous pas les trois valeurs séparément et effectuez la concaténation dans votre code au lieu d'utiliser la base de données pour cela ?
Pour répondre à ta question:Dans Hibernate v3 (java, désolé), il y a un getColumnAlias méthode sur l’interface Projection.Je ne parviens pas à trouver son homologue dans NHibernate.
Acclamations
Autres conseils
Vous pouvez utiliser {alias} - il fera référence à l'alias de la projection actuelle.