gpt4 book ai didi

java - 第一个排序属性必须与应用不等式过滤器的属性相同

转载 作者:行者123 更新时间:2023-12-01 14:19:15 25 4
gpt4 key购买 nike

java.lang.IllegalArgumentException: The first sort property must be the same as the property to which the inequality filter is applied. In your query the first sort property is vote but the inequality filter is on createdDate



当我尝试运行下面的代码时出现此错误。有解决这个问题的方法吗?
Query query = new Query("Post");

long timeAgo = now - timeLimit;
Filter categoryFilter = new FilterPredicate("postCategory", FilterOperator.EQUAL, category);
Filter createdDateFilter = new FilterPredicate("createdDate", FilterOperator.GREATER_THAN, timeAgo);
Filter compositeFilter = CompositeFilterOperator.and(categoryFilter, createdDateFilter);
query.setFilter(compositeFilter);

query.addSort("vote", SortDirection.DESCENDING);

List<Entity> postsEntityList = datastore.prepare(query).asList(FetchOptions.Builder.withOffset(offset).limit(limit));

上面的代码试图根据它们的类别和过去 24 小时内创建的 Post 实体列表。然后按他们有多少票对他们进行排序。它还具有分页的限制和偏移量。

最佳答案

为避免该错误,您唯一的选择是添加多个排序顺序,如下所示,并将 createdDate 作为第一个排序顺序:

.addSort("createdDate", SortDirection.ASCENDING)
.addSort("vote", SortDirection.DESCENDING);

但这会有一个限制,即结果将无法根据您的第二个属性进行正确排序,因此您必须在客户端进行额外的排序。请阅读此 earlier post理解这种行为

关于java - 第一个排序属性必须与应用不等式过滤器的属性相同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17969369/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com