如何将项目排序HQL转换为过滤查询?

时间:2009-09-23 13:08:46

标签: java hibernate hql filtering

我有这个问题:

sess.createQuery("from Box b join b.items bi order by bi.name").list()

工作正常。 但是,我有一个hibernate的Collection框,想过滤。 天真的尝试:

 sess.createFilter(boxes, "join this.items bi order by bi.name").list()
 sess.createFilter(boxes, "from this join this.items bi order by bi.name").list()

不起作用!

将此HQL转换为过滤器的正确方法是什么?

2 个答案:

答案 0 :(得分:2)

...试

session.createFilter(items.getBoxes(), "order by this.name").list()

答案 1 :(得分:0)

撰写collection filters时,this指集合元素

你可以这样写:

sess.createFilter(boxes, "where this.name = ?").list();

那就是说,我的例子中没有任何条件。我不确定集合过滤器中是否允许order by(尚未尝试过),但如果您只想对集合元素进行排序,则可以通过@OrderBy注释指定排序顺序:

@OrderBy("name")
private List items;