[英]Simple HQL Query and Criteria in Hibernate
我必须编写HQL查询:
FROM Sending adp WHERE adp.id = (SELECT MAX (adpw.id) FROM Sending adpw WHERE adpw.place = adp.place)
我必须使用Criteria API,但无法对其进行管理。 查询返回数据库中所有位置的最后一次发送,并且效果很好,但是现在我必须将其转换为Criteria。 我管理的唯一一件事是使用以下代码仅显示一个地方:
Criteria criteria = getSession().createCriteria(
Sending.class);
criteria.setFetchMode("place", FetchMode.JOIN);
DetachedCriteria maxId = DetachedCriteria.forClass(Sending.class).setProjection(Projections.max("id"));
criteria.add(Property.forName("id").eq(maxId));
你可以帮帮我吗? 提前致谢!!
很抱歉回答我自己的问题,但我找到了解决方案。
我忘记了子查询可以与自己相关联。 我通过以下代码实现了查询:
Criteria criteria = getSession().createCriteria(Sending.class);
DetachedCriteria dc = DetachedCriteria.forClass(Sending.class, "adpw");
dc.add(Restrictions.eqProperty("adpw.place", "adp.place"));
dc.setProjection(Projections.max("id"));
criteria.add(Property.forName("id").eq(dc));
criteria.setMaxResults(count).setFirstResult(start);
return criteria.list();
现在一切都很好。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.