使用Hibernate Criteria从同一行获取两个独特的结果

时间:2017-06-06 22:49:37

标签: hibernate criteria hibernate-criteria

使用Hibernate Criteria可以从同一个表中获得两个独特的结果吗?例如,如果我想查询最新类型的车辆(卡车或汽车),该怎么办。

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表示为小数,因此表格可以按vehicleType排序。

更具体地说,我想使用hibernate做this

1 个答案:

答案 0 :(得分:0)

最后我发现我可以使用Hibernate创建一个本地SQL Query

例如:

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

缺点是Hibernate返回Object[]而不是Vehicle类型的对象(在上面的示例中)。