繁体   English   中英

Hibernate中的简单HQL查询和条件

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM