使用 Hibernate Criteria 从同一行获取两个唯一结果

Getting two unique results from same row using Hibernate Criteria

是否可以使用 Hibernate Criteria 从同一个 table 获得两个唯一的结果?例如,如果我想查询最近的车辆类型(卡车或汽车)怎么办?

Criteria criteria = getCurrentSession().createCriteria(Vehicle.class);
criteria.add(Restrictions.eq("vehicleType", "car"));  // notice how I want a unique car AND truck
criteria.add(Restrictions.eq("vehicleType", "truck"));
criteria.add(Restrictions.le("date", date));
criteria.addOrder(Order.desc("date"));
criteria.setMaxResults(2);
Object result = criteria.uniqueResult(); // Possible to get most recent unique car and truck?

我想在一个查询中执行此操作,因为我假设对数据库的一次查询比对数据库的两次查询要快。

因此,换句话说我的问题,如何在一个 Hibernate Criteria Query 中获取最新的 car 和最新的 truck。假设 cartruck 表示为小数,因此 table 可以按 vehicleType.

排序

更具体地说,我想 this 使用休眠。

最后我发现我可以使用 Hibernate 制作原生 SQL Query

例如:

getCurrentSession().createSQLQuery("SELECT * FROM Vehicle").list();

这样做的缺点是 Hibernate returns 一个 Object[] 而不是 Vehicle 类型的对象(在上面的例子中)。