我们包含名称架构,
我们正在创建带有定义的状态,模式。
但是现在想用值来表示状态。我们需要过滤像 (名字+姓氏).equals(“ RockJohn”)。
我们正在尝试编写自定义文件库查询。
有什么办法可以做到这一点?
答案 0 :(得分:1)
您可以使用Hibernate formula创建动态/计算属性:
@Formula(value = " concat(first_name, last_name) ")
String fullName
然后将其作为查询中的常规属性/字段
答案 1 :(得分:0)
在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);
在Kotlin中,您将编写以下内容:
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)
}