Service 自定义OrderByComparator日期时间天数
我需要按DateTimeColumn上的天数对DynamicQuery进行排序(顺便说一下,请联系表) 默认orderByComparator将带来:Service 自定义OrderByComparator日期时间天数,service,liferay,dynamicquery,Service,Liferay,Dynamicquery,我需要按DateTimeColumn上的天数对DynamicQuery进行排序(顺便说一下,请联系表) 默认orderByComparator将带来: 1969/04/02 1970/04/01 1970/04/01 1970/04/11 但我需要 1970/04/01 1970/04/01 1969/04/02 1970/04/11 我尝试重写OrderByComparator,然后在dynamicQuery()方法上使用它,但没有成功 我自己尝试实现OrderByComparatorFa
1969/04/02
1970/04/01
1970/04/01
1970/04/11
但我需要
1970/04/01
1970/04/01
1969/04/02
1970/04/11
我尝试重写OrderByComparator,然后在dynamicQuery()方法上使用它,但没有成功
我自己尝试实现OrderByComparatorFactory,但没有调用我的比较方法
我想我可以使用自定义查询,但没有其他方法可以这样做
顺便说一下,我使用的是一个搜索容器,DynamicQuery不使用OrderByComparator方法中的compare方法。DynamicQuery仅添加OrderByComparator中的字段和asc/desc 请参见此处的Liferay代码: BasePersistentImpl:
public List findWithDynamicQuery(
DynamicQuery dynamicQuery, int start, int end,
OrderByComparator orderByComparator)
throws SystemException {
OrderFactoryUtil.addOrderByComparator(dynamicQuery, orderByComparator);
return findWithDynamicQuery(dynamicQuery, start, end);
}
OrderFactoryUtil:
public static void addOrderByComparator(
DynamicQuery dynamicQuery, OrderByComparator obc) {
if (obc == null) {
return;
}
String[] orderByFields = obc.getOrderByFields();
for (String orderByField : orderByFields) {
if (obc.isAscending(orderByField)) {
dynamicQuery.addOrder(asc(orderByField));
}
else {
dynamicQuery.addOrder(desc(orderByField));
}
}
}
您可以按照比较器对结果列表进行排序,就像我在本例中所做的那样: