Hibernate Criteria API эквивалентен предложению HQL select? - PullRequest
5 голосов
/ 10 мая 2010

Я хотел бы получить комбинированный запрос для двух постоянных классов.

В 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 в качестве параметров его строителя

Что такое критерий, эквивалентный предложению HQL select?

Ответы [ 2 ]

5 голосов
/ 10 мая 2010

Вы должны будете использовать ResultTransformer для этого.В блоге Hibernate 3.2: Transformers for HQL и SQL приведен следующий пример (где StudentDTO - это компонент, не являющийся сущностью):

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 голос
/ 10 мая 2010

В Criteria API эта функция обрабатывается Проекциями .Документация немного запутанная и чрезмерно сложная, но на это нужно обратить внимание.

...