Hibernate Criteria API相当于HQL select子句?

时间:2010-05-10 10:01:32

标签: java hibernate orm hql criteria

我想对两个持久化类进行组合查询。

在HQL中,这可以通过select子句

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

在上面的例子中,Family是一个以DemesticCat作为其construtor params的联合类

HQL select子句的Criteria等价物是什么?

2 个答案:

答案 0 :(得分:5)

您必须使用ResultTransformerHibernate 3.2: Transformers for HQL and SQL博客文章提供了以下示例(其中StudentDTO是非实体Bean):

List resultWithAliasedBean = s.createCriteria(Enrolment.class)
  .createAlias("student", "st").createAlias("course", "co")
  .setProjection( Projections.projectionList()
                   .add( Projections.property("st.name"), "studentName" )
                   .add( Projections.property("co.description"), "courseDescription" )
          )
          .setResultTransformer( Transformers.aliasToBean(StudentDTO.class) )
          .list();

 StudentDTO dto = (StudentDTO)resultWithAliasedBean.get(0);  

答案 1 :(得分:1)

在Criteria API中,此功能由Projections处理。文档有点令人困惑和过于复杂,但这就是你需要看的东西。