如何在Hibernate中按顺序使用子句

时间:2012-11-28 12:38:24

标签: java hibernate hql criteria-api

我想通过具体顺序从数据库通过Hibernate获取对象。这个顺序是这样的:

作为第一个我希望获得标题为first_column的列不为空的对象,

作为第二个我希望得到列second_column的对象不为空,

作为最后一个我想获取third_column是另一个对象/表的id的对象,而另一个对象有一个具有具体值的字段,例如:"something"

我已经用这种方式创建了标准:

criteria.addOrder(Order.asc("firstColumn"));
criteria.addOrder(Order.asc("secondColumn"));

但我怎样才能满足最后一项要求? 有了限制,我可以这样做:

criteria.createAlias("thirdColumn", "t");
criteria.add(Restrictions.eq("t.field", "something"));

但是我必须使用订单,而不是使用三个单独的Criteria结果限制,因为我还使用setFirstResult()的{​​{1}}和setMaxResults()来实现我的分页前端。

2 个答案:

答案 0 :(得分:1)

如果您可以在SQL中编写语句,那么您可以使用this post中提到的方法来创建Order的自定义子类。

答案 1 :(得分:1)

我认为您可以简单地使用“。”分隔符,并按照以下步骤编写代码

criteria.createAlias("thirdColumn", "t");
criteria.addOrder(Order.asc("t.field"));