[英]Can I select null as a column value in HQL query?
我需要一個包含三列的列表。 第一列和第三列的值為 null,而第二列的值為 null。我可以通過 HQL 查詢來完成嗎?
我需要這樣的東西:
select id, null, name from MyClass
其中 MyClass 以及基礎表只有兩個屬性/列,即“id”和“name”
似乎可行的另一個選項(在DB2,MySQL,Oracle和SQL Server上測試):
select id, cast(null as char), name from ...
您可以繼承Hibernate方言,並使用自定義函數對其進行抽象:
registerFunction("always_null",
new SQLFunctionTemplate(Hibernate.STRING, "cast(null as char)"));
然后在您的HQL中使用它:
select id, always_null(), name from ...
您可以使用nullif()
函數生成null。
它接受兩個參數。 如果參數相等,則將返回null
值。
AFAIK,您的查詢將不會返回預期的結果,它將僅返回null
(在您的情況下為id
) 之前的列。 但是,以下方法會起作用
select id as first, '', name from MyClass
我不知道這是一個錯誤還是僅僅是一個不受支持的功能( HQL幫助:可能在Hibernate論壇上“選擇NULL作為...”線程嗎?似乎暗示這是一個錯誤)。
我不確定我是否理解您為什么需要這個(可以select new
一個select new
表達式嗎?),但恐怕您這里必須使用本機SQL。
您也可以嘗試TO_CHAR(null)。 它對於HQL很好用-Oracle在構造函數new Foo(id,name,attr3)中,其中attr3-字符串值
select id, null as collumn_name, name from MyClass
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.