2

我可以像这样在 HQL 中选择 int 和 string 文字:

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...),但这似乎效率低下......

4

2 回答 2

2
select cast(1 as bool) as bitLiteral from Eg.MyClass

NHibernate 通常支持与 Hibernate 相同的功能。这是从this answer详细说明的。我已经用 NHibernate 对其进行了测试。

NHibernate 将 SQLbit类型映射到 .Netbool类型。

在普通 SQL 中也需要强制转换,因为 SQL(至少 SQL Server Transact-SQL)缺少位文字

于 2016-03-11T19:29:58.573 回答
1

SQL 中实际上没有真正的布尔值(如 in Select 1=1),除了 in 条件。我认为 HQL 将“真”和“假”变成 0 和 1(你可以在某处配置),但我猜它仍然是一个整数。

您最有可能做的最简单的事情是在查询后将整数转换为内存中的布尔值。

于 2016-03-11T11:44:17.557 回答