Я хотел бы иметь объединенный запрос для двух персистентных классов.
В HQL это могло быть достигнуто избранным пунктом,
select new Family(mother, mate, offspr)
from DomesticCat as mother
join mother.mate as mate
left join mother.kittens as offspr
В вышеупомянутом примере Семейство является conbined классом с DemesticCat как его construtor параметрические усилители
Что Критерии эквивалентно из пункта выбора HQL?
Вам придется использовать ResultTransformer
для этого. В статье Hibernate 3.2: Transformers for HQL and SQL блога приводится следующий пример (где StudentDTO
- это non-entity 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);
В API Criteria эта функциональность обрабатывается Projections. Документация немного запутана и переусложнена, но это то, на что вам нужно обратить внимание.