【发布时间】:2021-06-07 00:40:00
【问题描述】:
我正在实施一个用例,将 cordapp 从 V4.5 操作系统升级到 V4.6 操作系统。但是当我在 PostgreSQL 上使用带有自定义模式的 Corda V4.6 时。
我遇到了自定义保险柜查询的问题,下面的代码出现错误。
示例代码:
FieldInfo attribute1 = null;
try {
attribute1 = getField("attributeInCordaSchema", AttributeSchema.PersistentAttribute.class);
}catch (NoSuchFieldException e) {
e.printStackTrace();
}
final String attributeFromService = (String) inputMapObj.get("attribute");
QueryCriteria generalCriteria = new QueryCriteria.VaultQueryCriteria(Vault.StateStatus.ALL);
QueryCriteria attribute1Criteria = new QueryCriteria.VaultCustomQueryCriteria(Builder.equal(attribute1, attributeFromService));
QueryCriteria criteria = generalCriteria.and(attribute1Criteria);
Vault.Page<OurState> results = getServiceHub().getVaultService().queryBy(OurState.class, criteria);
List<StateAndRef<OurState>> matchingStates = results.getStates();
错误:
net.corda.core.node.services.VaultQueryException: An error occurred while attempting to query the vault: org.hibernate.exception.SQLGrammarException: could not extract ResultSet at net.corda.node.services.vault.NodeVaultService._queryBy(NodeVaultService.kt:646) ~[corda-node-4.6.jar:?]
at net.corda.core.node.services.VaultService$DefaultImpls.queryBy(VaultService.kt:436) ~[corda-core-4.6.jar:?]
at net.corda.node.services.api.VaultServiceInternal$DefaultImpls.queryBy(VaultServiceInternal.kt) ~[corda-node-4.6.jar:?]
at net.corda.node.services.vault.NodeVaultService.queryBy(NodeVaultService.kt:54) ~[corda-node-4.6.jar:?]
自定义查询保险库的方式是否发生了变化?
【问题讨论】: