Основные манипуляции с датой / временем в запросе NHiberate - PullRequest
1 голос
/ 27 мая 2010

Я пытаюсь ограничить мой запрос NHibernate некоторыми базовыми манипуляциями с датой / временем . Более конкретно, я хочу выполнить следующий оператор (псевдо-SQL):

select * from article where created_on + lifespan >= sysdate

с:

  • created_on сопоставляется со свойством типа DateTime.
  • lifespan сопоставляется со свойством типа TimeSpan.
  • sysdate - это текущая дата / время (сервера базы данных или хоста приложения, мне все равно)

Есть ли какой-нибудь встроенный способ сделать это с помощью Criteria-API или HQL ?

return session
  .CreateCriteria<Article>()
  .Add( ? )
  .List<Article>();

Ответы [ 2 ]

1 голос
/ 12 июня 2010
create view activearticle as 
    select * from article 
    where created_on + lifespan >= sysdate
1 голос
/ 28 мая 2010

Поскольку запросы выполняются сервером, он должен поддерживать операции, которые вы хотите выполнить.

Если это произойдет, вам нужно унаследовать соответствующий диалект и зарегистрировать соответствующие функции в его конструкторе.

...