使用HQL在select中创建subselect中的对象列表

时间:2011-03-25 09:43:54

标签: java hibernate hql

是否可以使用非实体对象和来自HQL查询的1:n关系创建对象层次结构?

注意:使用命名空间完全限定时创建Analysis对象没有问题。唯一的问题是通过subselect与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

所以我基本上希望能够在实体的对象中生成报告:

表=&gt; SomeTable,SomeTable

像:

分析=&gt;子分析,子分析

真正的查询涉及更多的求和和加入。

1 个答案:

答案 0 :(得分:0)

创建Analysis对象应该是可能的,虽然我不确定你是否必须使用FQCN,因为Hibernate必须知道要使用的确切类。对于SubAnalysis对象和关联,我不确定,文档没有明确告诉我们(或者我只是盲目;))。