Псевдоним объединенной таблицы в SQLProjection - PullRequest
1 голос
/ 26 июня 2009

У меня есть этот запрос:

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", например, написать {estate} в строке SQL? {estate} не работает. Теперь я закончил жестким кодированием псевдонима в строке SQL, но это выглядит не очень убедительно.

Если я правильно понимаю документы, это возможно. Я использую NH2.0.1.

/ Asger

Ответы [ 2 ]

1 голос
/ 01 мая 2012

Вы можете использовать {псевдоним} - он будет ссылаться на псевдоним текущей проекции.

1 голос
/ 02 июля 2009

Не прямой ответ на ваш вопрос, но: Почему бы вам не запросить три значения по отдельности и не выполнить конкатенацию в своем коде вместо использования базы данных для этого?

Чтобы ответить на ваш вопрос: в Hibernate v3 (java, извините) есть метод getColumnAlias ​​ на интерфейсе проекции. Я не могу найти его аналога в NHibernate.

Приветствия

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...