Hibernate Criteria API相当于HQL select子句?
我想对两个持久化类进行组合查询。
在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等价物?
您必须为此使用ResultTransformer
。 Hibernate 3.2:HQL和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);
在Criteria API中,此function由Projections处理。 文档有点令人困惑和过于复杂,但这是你需要看到的。
- 更改域对象的通知(Hibernate / Java)
- 创建名为’sessionFactory’的bean时出错无法实例化默认tuplizer
- 部署应用程序的java.lang.AbstractMethodError(Spring 4 MVC + Hibernate 4/5)
- Org.hibernate.HibernateException:没有活动事务,createQuery无效
- Hibernate错误:org.hibernate.NonUniqueObjectException:具有相同标识符值的另一个对象已与会话关联
- JPA 2.1 / Hibernate 4.3弃用警告
- JPA:如何对实体中的Set字段进行排序?
- 什么是Hibernate中的transaction.commit()?
- Hibernate – 避免LazyInitializationException – 从代理和会话中分离对象