Псевдоним объединенной таблицы в SQLProjection

StackOverflow https://stackoverflow.com/questions/1048257

  •  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} — он будет ссылаться на псевдоним текущей проекции.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top