2011-03-25 119 views
3

是否可以使用HQL查詢創建具有非實體對象和1:n關係的對象層次結構?使用HQL選擇從子選擇中創建對象列表

注意:使用命名空間完全限定時,創建Analysis對象是沒有問題的。唯一的問題是通過sublect到SubAnalysis對象的關聯。

類:

public class Analysis 
{ 
    public List<SubAnalysis> relatedAnalysis; 
    public Long someSum; 

    public Analysis(Long someSum, List<SubAnalysis> relatedAnalysis) 
    { 
    this.someSum = someSum; 
    this.relatedAnalysis= relatedAnalysis; 
    } 
} 
public class SubAnalysis 
{ 
    public String info; 

    public SubAnalysis(String info) 
    { 
    this.info = info; 
    } 
} 

HQL:

select new Analysis(sum(t.value), 
      (select new SubAnalysis(x.info) 
       from SomeTable x 
      where x.t = t)) 
    from Table t 
    where t.id = :id 
group by t 

所以我基本上希望能夠生成對象的實體的報告:

表=> SomeTable,SomeTable

贊好:

分析=>子分析,子分析

真正的查詢涉及更多的求和和連接。

回答

0

應該可以創建Analysis對象,儘管我不確定是否需要使用FQCN,因爲Hibernate必須知道要使用的確切類。對於SubAnalysis對象和關聯,我不確定,文檔沒有明確地告訴我們(或者我只是盲目的)。)。

+0

啊,是的,創建分析對象的作品。只有SubAnalysis協會和文件沒有告訴任何有關這個問題。 – abp 2011-03-25 10:01:43

+0

您是否已經嘗試使用一個小例子? – Thomas 2011-03-25 10:23:48

+0

是的,獲取SubAnalysis的列表是沒有問題的,但hibernate似乎無法爲Analysis對象找到合適的c'tor。但是我不知道除了列表,SubAnalysis []或Object []之外它還有什麼可以等待。 – abp 2011-03-25 10:33:55