Псевдоним объединенной таблицы в SQLProjection
-
20-08-2019 - |
Вопрос
У меня есть этот запрос:
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"))
Есть ли способ получить псевдоним SQL для «имущества», например, написав {estate} в строке SQL?{estate} не работает.В итоге я жестко запрограммировал псевдоним в строке SQL, но это кажется не очень надежным.
Если я правильно понимаю документацию, это должно быть возможно.Я использую NH2.0.1.
/Асгер
Решение
Не прямой ответ на ваш вопрос, но:Почему бы вам не запросить три значения отдельно и не выполнить объединение в своем коде вместо использования для этого базы данных?
Чтобы ответить на ваш вопрос:В Hibernate v3 (Java, извините) есть getColumnAlias метод в интерфейсе Projection.Я не могу найти его аналог в NHibernate.
Ваше здоровье
Другие советы
Вы можете использовать {alias} — он будет ссылаться на псевдоним текущей проекции.