EBean保留in子句中的排序顺序

时间:2014-04-30 14:20:20

标签: java ebean

我有一个数据库,其中包含我使用Lucene索引的文档 - 并非所有字段都与搜索相关,因此只是其中的一部分实际上已编入索引。搜索为我提供了按其分数排序的文档ID列表。我用这个清单找到Ebeans

PagingList<MyDoc> pagingList = Ebean.find(MyDoc.class)
        .where().in("id", idList)
        .findPagingList(pageSize);

我想明显保留排序顺序。据我所知,EBean中没有构建方式,为了保留顺序,我找不到一个排序函数,让我实现一个Comparator。

有没有办法做到这一点?

更新

正如Rob所说,我正在使用List&lt;&gt;并自己排序。

PagingList<MyDoc> pagingList = Metadata.find(MyDoc.class)
    .where().in("id", idList).findPagingList(PAGE_SIZE);
Page<MyDoc> pg = pagingList.getPage(page);
List<MyDoc> results = pg.getList();

Collections.sort(results, new Comparator<MyDoc>() {
    @Override
    public int compare(MyDoc o1, MyDoc o2) {
        if (idList.indexOf(o1.id) > idList.indexOf(o2.id)) {
            return 1;
        }
        else if (idList.indexOf(o1.id) < idList.indexOf(o2.id)) {
            return -1;
        }
        else {
            return 0;
        }
    }
});

1 个答案:

答案 0 :(得分:0)

使用findList()而不是findPagingList() - 它将返回一个List ...然后在列表中使用您自己的比较器自行排序。