Corda 通过合并两个模式列值并进行比较来编写自定义查询?
我们有名称模式包含Corda 通过合并两个模式列值并进行比较来编写自定义查询?,corda,Corda,我们有名称模式包含 名字:罗克 姓:约翰 前缀:Mr 中间名:“ 后缀:“Jr” 我们正在创建一些状态,模式和定义 但是现在我们要用值来表示状态。我们需要像这样过滤这些值 (名字+姓氏)。等于(“RockJohn”)。 我们正在尝试编写自定义vault查询 有什么方法可以做到这一点吗?在Java中,您可以编写如下内容: FieldInfo firstNameField = getField("firstName", NameSchemaV1.PersistentName.class); Fi
- 名字:罗克
- 姓:约翰
- 前缀:Mr
- 中间名:“
- 后缀:“Jr”
有什么方法可以做到这一点吗?在Java中,您可以编写如下内容:
FieldInfo firstNameField = getField("firstName", NameSchemaV1.PersistentName.class);
FieldInfo lastNameField = getField("lastName", NameSchemaV1.PersistentName.class);
CriteriaExpression firstNameIndex = Builder.equal(firstNameField, "Rock");
CriteriaExpression lastNameIndex = Builder.equal(lastNameField, "John");
QueryCriteria firstNameCriteria = new QueryCriteria.VaultCustomQueryCriteria(firstNameIndex);
QueryCriteria lastNameCriteria = new QueryCriteria.VaultCustomQueryCriteria(lastNameIndex);
QueryCriteria criteria = firstNameCriteria.and(lastNameCriteria);
Vault.Page<ContractState> results = getServiceHub().getVaultService().queryBy(NameState.class, criteria);
val results = builder {
val firstNameIndex = NameSchemaV1.PersistentName::firstName.equal("Rock")
val lastNameIndex = NameSchemaV1.PersistentName::lastName.equal("John")
val firstNameCriteria = QueryCriteria.VaultCustomQueryCriteria(firstNameIndex)
val lastNameCriteria = QueryCriteria.VaultCustomQueryCriteria(lastNameIndex)
val criteria = firstNameCriteria.and(lastNameCriteria)
serviceHub.vaultService.queryBy(NameState::class.java, criteria)
}
可以使用创建动态/计算特性:
@Formula(value = " concat(first_name, last_name) ")
String fullName
然后在查询中将其视为常规属性/字段谢谢@Joel。但我们将收到全名作为“RockJohn”这样的论点。我们需要通过组合这两个值进行筛选,并与“RockJohn”进行比较,然后在模式中添加一个
FullName
字段如何?谢谢,@Joel。但这与我们的数据模型背道而驰,所以我们需要这种格式的搜索。我不相信这种查询目前是可能的,不,谢谢。我建议你推荐。