没有FROM和WHERE子句的HQL语句

时间:2010-09-18 13:08:29

标签: nhibernate hql

我正在尝试从HQL调用数据库函数。 HQL语句应该只调用函数并返回其值,如此

select someFunction(:someParameter)

如果我尝试拨打选择current_timestamp()

失败了

  

NHibernate.Hql.Ast.ANTLR.QuerySyntaxException:抛出了类型为“Antlr.Runtime.MismatchedTreeNodeException”的异常。靠近第1行第24列[select current_timestamp()]

我知道检索当前时间戳的理由不多。但我已经创建了一些用户定义的数据库函数,我想通过从HQL调用它们进行单元测试。

在我看来,如果没有FROM和WHERE子句,就不可能编写HQL语句。这可能是真的吗?

IQuery query = unitOfWork.Session.CreateQuery("select current_timestamp()");

var ts = query.UniqueResult();

2 个答案:

答案 0 :(得分:2)

如果您明确地将其设置为SQL查询而不是HQL查询,则可以使用此方法:

var query = unitOfWork.Session.CreateSQLQuery("select current_timestamp()");

答案 1 :(得分:0)

  1. 调用这样的函数没有多大意义。您有一个应该使用其他方法调用的存储过程,或者您有一个与DB无关的函数,因此不应该从数据库开始运行。

  2. 在任何情况下,如果函数对一组行不起作用,你不能只添加一些虚拟FROM子句,例如在一个小的静态表上吗?