【发布时间】:2013-07-12 10:31:22
【问题描述】:
我必须编写那个 HQL 查询:
FROM Sending adp WHERE adp.id = (SELECT MAX (adpw.id) FROM Sending adpw WHERE adpw.place = adp.place)
我必须使用 Criteria API,但我无法管理它。查询返回数据库中所有地方的最后一次发送,它工作得很好,但现在我必须将它转换为标准。我唯一能做的就是用以下代码只显示一个地方:
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 代码有什么问题?它不工作?它给出了错误的结果?
-
我只收到一个结果。唯一具有最大 id 的 - 具有最大 id 的发送。而且它必须返回超过 350 个 - 每个地方最后一次发送。
标签: java sql hibernate criteria