簡體   English   中英

我可以將 select null 作為 HQL 查詢中的列值嗎?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM