2009-06-26 3 views
1

У меня есть этот запрос:Псевдоним присоединяемой таблицы в SQLProjection

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

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

/Asger

ответ

1

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

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

Приветствия

+0

Привет, Маартен, большое спасибо за ваш ответ. GetColumnAlias ​​- именно то, что я ищу ... но, как вы говорите, в NH не похоже. Но что касается вашего предложения, вы очень правы, я схватил часть запроса из какой-либо другой части моего кода, где я собираюсь использовать предложение HAVING для прогнозируемого значения, так что это имеет смысл - но в этом случай это не так. Спасибо что подметил это! – asgerhallas

1

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

Смежные вопросы