corda - 如果没有其他字段条件,则无法使用带有排序的 VaultQuery
问题描述
我正在使用vaultQueryBy
该查询全部Unconsumed state
并使用该状态的某些字段进行排序,但它不起作用(结果是完全随机排序)。然后我使用相同vaultQueryBy
但添加一些相等的条件,然后结果是完美的排序。
我也尝试使用其他字段(类型 String 和 long),但它也不起作用,除非与其他字段条件一起使用。
这里有一些代码
QueryCriteria queryCriteria = new QueryCriteria.VaultQueryCriteria(Vault.StateStatus.UNCONSUMED);
Sort.SortColumn sortCol = new Sort.SortColumn(new SortAttribute.Custom(CustomerSchema.CustomerEntity.class, "changeDate"), Sort.Direction.DESC);
List list = new ArrayList();
list.add(sortCol);
List<StateAndRef<CustomerState>> list = rpcOps().vaultQueryBy(queryCriteria, pageSpecification, new Sort(sortList), CustomerState.class).getStates();
它不起作用然后我在 vaultQueryBy 之前添加了这个条件
QueryCriteria baseCriteria = new QueryCriteria.VaultCustomQueryCriteria(Builder.notNull(getField("linearId", CustomerSchemaV01.CustomerEntity.class)));
queryCriteria = queryCriteria.and(baseCriteria);
它工作正常,得到正确排序的结果。
我不太确定这是 Corda 的意图还是只是一些错误,但我认为它应该能够在不使用任何现场条件的情况下进行订购。
解决方案
这可能是预期的行为,因为排序条件仅适用于自定义查询,因此您需要提供自定义查询以将其添加到整体查询中。
推荐阅读
- c# - 将 xaml 用于 xamarin forns 项目时出现错误,并且在呈现控件时出现异常
- r - “点图”相对于具有标准偏差的平均值
- matlab - 实验数据的数值积分
- python - Django 删除 OneToOneField
- javafx - 如何在javafx中绘制一个开放的弧?
- android - 视图周围的渐变阴影
- c++11 - 如何按字母顺序对结构中的字符串进行排序?
- excel - Excel删除两个特定单元格之间的行
- r - 每次第 2、3 或 4 列中的行值更改时,转置第 5-8 列
- android - android.view.InflateException: Binary XML file line #2: Binary XML file line #2: Error inflating class android.support.v7.widget.CardView