0
我一直在为此苦苦挣扎,所以我希望有人能够给我一些指导。我有两个表格:Hibernate预测在列表中找到最大值
WardTransactions:
+-----------+
| Field |
+-----------+
| Id |
| VisitId |
| Event |
| EventTime |
+-----------+
Visits:
+---------------+
| Field |
+---------------+
| Id |
| VisitNumber |
+---------------+
对于每次访问可以有许多WardTransactions。我正在尝试使用Hibernate Criteria/Projections来查找最近的WardTransaction进行特定访问。例如:
public WardTransaction findLast(Visit visit) {
DetachedCriteria maxQuery = DetachedCriteria.forClass(WardTransaction.class);
maxQuery.setProjection(Projections.max("id"));
Criteria query = getSession().createCriteria(WardTransaction.class)
.createAlias("visit", "visit")
.add(Restrictions.eq("visit.id", visit.getId()))
.add(Property.forName("id").eq(maxQuery));
return (WardTransaction) query.uniqueResult();
}
这是行不通的。从查看结果查询看来,它正在使用Max WardTransaction.Id进行内部连接,而不是使用所需访问的记录的最大值。即(修改,以使其更清晰):
select
a.Id,
a.VisitId,
a.Event,
a.EventTime,
b.Id,
b.VisitNumber,
from
WardTransactions a
inner join
Visits b
on a.VisitId=b.Id
where
b.Id='22'
and a.Id = (
select
max(a.Id) as y0_
from
WardTransactions a
)
我试图在我寻求的解决方案的其他方法,但没有结果。 任何意见,指导赞赏。
完美!谢谢你的快速反应。非常感激! – skyman