NHibernate: возможно ли добавить ограничение на основе псевдонима - PullRequest
0 голосов
/ 04 декабря 2009

Скажем, я создаю запрос критерия и преобразую его с помощью преобразователя результатов AliasToBean.

session.CreateCriteria<Staff>("s")
  .CreateAlias("supervisor", "super")
  .SetProjection(Projections.ProjectionList()
    .Add(Projections.Property("s.name"), "name")
    .Add(Projections.Property("super.name"), "supervisor_name"))
  .SetResultTransformer(Transformers.AliasToBean<StaffView>());

Можно ли добавить ограничение, если вы знаете только имя свойства бина? Вы можете добавить AddOrder, используя имена свойств бина, но ограничения появляются только для работы с реальным именем свойства. Я предполагаю, что это потому, что они применяются до преобразования, так же, как вы не используете псевдоним столбца в предложении where, но вы можете в следующем порядке:

//throws exception like cannot find property supervisor_name in Staff class
//only "super.name" works
.Add(Restrictions.Like("supervisor_name", "blah"))

//this works though
.AddOrder(Order.Asc("supervisor_name")) 

Так что в основном мне нужен способ получить псевдонимное имя свойства на основе псевдонима. Я могу придумать несколько способов сделать это, но я надеялся, что в NHibernate есть какой-то существующий метод? Я мог бы, например, сохранить отдельную карту свойства для псевдонимов или просто сопоставить с представлением базы данных, чтобы не было необходимости преобразовывать его в bean.

1 Ответ

0 голосов
/ 05 декабря 2009

Должно работать с именем псевдонима. {} Псевдоним .Name.

Или я неправильно понимаю вашу проблему?

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