CreateSqlQuery для сущности со свойством формулы - PullRequest
6 голосов
/ 21 июня 2010

Когда я пытаюсь запросить таблицу с помощью CreateSqlQuery и преобразовать ее в сущность, содержащую свойство формулы, я получаю следующее исключение Adoexception.

"Значение не может быть нулевым. Имя параметра: fieldName "

Во-первых, возможно ли использовать createqlquery для сущности с отображением формулы?

Ответы [ 2 ]

7 голосов
/ 21 июня 2010

Можно использовать CreateSQLQuery с формулами.

Вот подтверждение концепции.Отображение (класс не трудно угадать):

<class name="Foo">
  <id name="Id">
    <generator class="hilo"/>
  </id>
  <property name="Data"/>
  <property name="DataX2" formula="Data * 2"/>
</class>

И вот запрос:

var foos = session.CreateSQLQuery(
                   @"
                   select Id          as {foo.Id},
                          Data        as {foo.Data},
                          Data + Data as {foo.Data2}
                   from   Foo
                   ")
                  .AddEntity("foo", typeof(Foo))
                  .List<Foo>();

Если вы посмотрите внимательно, вы увидите, что я использую другую формулучем тот, который объявлен в отображении.NHibernate допускает все что угодно, пока все свойства находятся в запросе.

Я предлагаю вам прочитать 17.1.2.Объект запрашивает и следующие пункты.

1 голос
/ 20 ноября 2012

После долгих поисков я нашел следующее

https://issues.jboss.org/browse/JBPAPP-6571

Кажется, это реальная ошибка в спящем режиме, которую они решили не исправлять. Есть несколько обходных путей. Я думаю, что лучше всего использовать псевдонимы для имен свойств. Псевдонимы должны быть использованы, как указано здесь:

http://nhibernate.info/doc/nh/en/index.html#querysql-aliasreferences

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