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

Hibernate は通常、Hibernate と同じ機能をサポートします。これは、この回答から詳しく説明されています。NHibernate でテストしました。

NHibernate は SQLbit型を .Netbool型にマップします。

SQL (少なくとも SQL Server Transact-SQL)にはビット リテラルがないため、プレーン SQL でもキャストが必要です。

于 2016-03-11T19:29:58.573 に答える