How do I turn item ordering HQL into a filter quer

2019-08-11 11:34发布

I have this query:

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

It works fine. However, I have a hibernate's Collection boxes and want to filter is. Naive tries:

 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()

don't work!

What's the proper way to convert this HQL to filter?

2条回答
兄弟一词,经得起流年.
2楼-- · 2019-08-11 12:12

When writing collection filters, this refers to collection element.

You can write something like:

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

That said, I don't see any conditions in your example. I'm not sure whether order by is allowed in collection filters (haven't tried it), but if all you want to do is sort collection elements you can specify sort order via @OrderBy annotation:

@OrderBy("name")
private List items;
查看更多
迷人小祖宗
3楼-- · 2019-08-11 12:36

Try...

session.createFilter(items.getBoxes(), "order by this.name").list()
查看更多
登录 后发表回答