我正在使用Corda 4.0,并且想使用动态列名(colN)和列值(colC)运行自定义查询。这是我用于查询构建的代码
builder {
val index: CriteriaExpression.ColumnPredicateExpression<Any,String> = getField(colN,CarSchemaV1.PersistentCar::class.java).equal(colC)
val customCriteria = QueryCriteria.VaultCustomQueryCriteria(index)
}
但是我在编译时遇到了错误
Type parameter bound for L in constructor VaultCustomQueryCriteria<L: PersistableState>(expression: CriteriaExpression<L,Boolean>,...) is not satisfied: inferred typed Any is not a subtype of StatePersistable
答案 0 :(得分:0)
这里的问题与您在Any
的泛型中使用CriteriaExpression.ColumnPredicaeExpression<Any, String>
有关。如错误消息所示,应该使用Any
StatePersistable
根据文档:net.corda.core.schemas.StatePersistable
Marker interface to denote a persistable Corda state entity that will always have a transaction id and index
您的模式CarSchemaV1.PersistentCar::class.java
可能实现PersistentState。尝试将其添加到您的泛型中。
val index: CriteriaExpression.ColumnPredicateExpression<CarSchemaV1.PersistentCar,String> = getField(colN,CarSchemaV1.PersistentCar::class.java).equal(colC)