Ключевые слова NHibernate и MySql - PullRequest
0 голосов
/ 18 апреля 2010

Почему Nibernate HQL не может обработать следующий запрос:

from Deal D where (D.ApprovalDate + INTERVAL 1 Year) < current_timestamp() <  (D.RenewalDate + INTERVAL -1 Year) 

зная, что INTERVAL и YEAR - это ключевые слова в MySQL, так что это своего рода смешивание Sql в Hql (если только Hql не может обрабатывать функции даты, подобные, и я не знаю). Диалект MySQLDialect

Совершенно верно для выполнения этого запроса

  SELECT '2005-01-01' + INTERVAL 1 Year;

1 Ответ

1 голос
/ 18 апреля 2010

Вы можете передать Sql непосредственно в запрос, используя Criteria Query. Как то так

Session.CreateCriteria<Deal>()
.Add(Restrictions.Sql(D.ApprovalDate + " INTERVAL 1 Year < current_timestamp() < " + D.RenewalDate + " INTERVAL -1 Year")

Restrictions.Sql передаст все, что вы дадите, непосредственно в базу данных как sql.

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