使用 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
。假设 car
和 truck
表示为小数,因此 table 可以按 vehicleType
.
排序
更具体地说,我想 this 使用休眠。
最后我发现我可以使用 Hibernate 制作原生 SQL Query
。
例如:
getCurrentSession().createSQLQuery("SELECT * FROM Vehicle").list();
这样做的缺点是 Hibernate returns 一个 Object[]
而不是 Vehicle
类型的对象(在上面的例子中)。
是否可以使用 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
。假设 car
和 truck
表示为小数,因此 table 可以按 vehicleType
.
更具体地说,我想 this 使用休眠。
最后我发现我可以使用 Hibernate 制作原生 SQL Query
。
例如:
getCurrentSession().createSQLQuery("SELECT * FROM Vehicle").list();
这样做的缺点是 Hibernate returns 一个 Object[]
而不是 Vehicle
类型的对象(在上面的例子中)。