我有这个问题:
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转换为过滤器的正确方法是什么?
答案 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;