【问题标题】:HQL convert complicated hql to criteriaHQL 将复杂的 hql 转换为标准
【发布时间】:2014-03-19 16:14:01
【问题描述】:
HQL
Query query = getSession()
.createQuery(
"select com from News as news " +
"join news.comments as com " +
"where news.id = :id " +
"order by com.addDate desc"
);
query.setParameter("id", id);
上面的 HQL 工作正常。想要更改标准 api。我做不到。请帮忙
【问题讨论】:
标签:
java
hibernate
criteria-api
【解决方案1】:
我想你可以试试这样的。
Criteria c = createCriteria(News.class);
c.add(Restrictions.idEq(id));
Criteria cComment = c.createCriteria("comments",c);
cComment.addOrder(Order.desc("addDate"));
ProjectionList projections = Projections.projectionList();
projections.add(Projections.property("c.id"),"id");
projections.add(Projections.property("c.addDate"),"addDate");
//Other Properties...
c.setProjection(projections)
c.setResultTransformer(Transformers.aliasToBean(Comment.class))
List<News> list = c.list();
请注意,Hibernate Criteria API 已被弃用,取而代之的是 JPA Criteria API