我可以在 HQL 中选择 int 和字符串文字,如下所示:
select 'a string' as StringLiteral, 1 as IntLiteral from Eg.MyClass
但我还没有找到选择布尔文字的方法。我已经尝试了select true ...
,并且select new bool true ...
,但这些会导致 HQL 语法异常。
有没有办法在 HQL 中选择布尔文本?
我找到了一种解决方法(select case when (1=1) then true...
),但这似乎效率低下......
select cast(1 as bool) as bitLiteral from Eg.MyClass
NHibernate通常支持与Hibernate相同的功能。这是从这个答案中阐述出来的。我已经用NHibernate测试过它。
NHibernate将SQL bit
类型映射到.Net bool
类型。
在纯SQL中也需要强制转换,因为SQL(至少是SQL Server Transact-SQL)缺少位文字。
在SQL中实际上没有真正的布尔值(如在Select 1=1
中),除了在条件中。我认为 HQL 将"真"和"假"转换为 0 和 1(您可以在某处配置),但我想它仍然是一个整数。
您最有可能做的最简单的事情是在查询后将整数转换为内存中的布尔值。