2010-01-27 28 views
3

我在jboss的文檔中找到了這個例子。hql中的新關鍵字如何工作?

select new Family(mother, mate, offspr) 
from DomesticCat as mother 
    join mother.mate as mate 
    left join mother.kittens as offspr 

Family從哪裏來的。我是否需要導入某處或使用其完全合格的類名?

回答

3

Family是一個普通的POJO,具有適當的構造函數,它需要聲明或完全合格。

+0

聲明在哪裏?怎麼樣? – flybywire 2010-01-27 12:03:46

+0

@flybywire作爲實體(註釋或映射) – 2010-01-27 13:03:35

1

導入是可選的,如果因爲其他原因被找到。 :-)

是的,它需要存在。這是一個不是實體的類,你創建它以可理解的方式處理三列。它需要一個適合該調用的構造函數。

基本上,這就像如果你這樣做:

  • 返回名單(三列)
  • 循環列表中的查詢,創建一個拿着列家庭對象,並返回列表的這些結果
+0

如果導入是可選的,並且類不是實體,Hibernate將如何找到它?它會在哪些包中查找它? – flybywire 2010-01-27 10:56:01

+0

@Flybywire誠然,它必須以某種方式找到:-)。如果聲明爲一個實體,如果在Hibernate的默認包中,或者被導入,則會發現它。我的回答並不是很清楚,因爲實體總是處於第一種情況。 :-) – KLE 2010-01-27 11:01:07

2

Family必須是具有適當構造函數的Java對象。如果對象是一個正常的映射實體(或者使用註釋或者在一個hibernate映射XML中),那麼導入是可選的。