我有车辆类和映射文件,我希望从ID desc订购车辆表中的所有行(我的其他表也需要相同)。
我收到了以下代码:
session = HibernateUtil.getSessionFactory().getCurrentSession();
tx = session.beginTransaction();
q = session.createQuery("from Vehicles order by ID DESC");
for (Iterator it=q.iterate(); it.hasNext();){
//some logic
}
但是我的套装不按ID排序,每次都有不同的顺序,如RAND()或其他东西。我想知道保留功能的最简单方法是什么,只是添加order by子句,因为我在很多地方都有相同的语法......
答案 0 :(得分:1)
我假设您的车辆类看起来像这样?我在这里使用JPA因为这就是我所知道的......
class Vehicles {
@Id
@Column(name="vehicles_id")
private int id;
// other stuff here
}
我不希望你的session.createQuery与我的不同,所以不会有这样的工作吗?
Query q = session.createQuery("select v from Vehicles v order by v.id desc");
如果你愿意,也可以使用标准吗?
class Main {
List<Vehicles> cars;
}
Criteria main = session.createCriteria(Main.class);
Criteria secondary = main.createCriteria("cars");
secondary.addOrder(Order.asc("id"));
答案 1 :(得分:1)
尝试“q = session.createQuery(...);”部分:
List results = q.list()
//loop through results
其他地方可能存在问题,因为“按id desc排序”部分是正确的。如果您具有正确的数据类型并且索引设置正确,请检查数据库/映射文件。
答案 2 :(得分:0)
你有没有试过“来自车辆v vid by v.id desc”?另一个选项是将可比较的接口添加到实体,然后将查询创建的列表放入一个sortedset。这通常是我在需要排序时所做的事情。