如何在Corda vault中查询特定日期范围内包含日期属性的州?

如何在Corda vault中查询特定日期范围内包含日期属性的州?,corda,Corda,我有使用java.util.Date属性的Corda状态。我希望能够执行vault查询以检索日期属性在特定日期范围内的状态。您可以使用serviceHub.jdbcSession()执行SQL查询。下面发布的是一个流示例,该流使用此函数并返回给定范围内的日期列表DATE\u STATE是由MappedSchema创建的数据库表,该表专门为我试图查询的状态定义。有关为某个状态创建的MappedSchema的信息,请参见: @StartableByRPC 类QueryDataRangeFlow(va

我有使用java.util.Date属性的Corda状态。我希望能够执行vault查询以检索日期属性在特定日期范围内的状态。

您可以使用
serviceHub.jdbcSession()
执行SQL查询。下面发布的是一个流示例,该流使用此函数并返回给定范围内的日期列表
DATE\u STATE
是由
MappedSchema
创建的数据库表,该表专门为我试图查询的状态定义。有关为某个状态创建的
MappedSchema
的信息,请参见:

@StartableByRPC
类QueryDataRangeFlow(val date1:Date,val date2:Date):FlowLogic(){
@暂停
覆盖有趣的调用():列表{
val connection=serviceHub.jdbcSession()
val queryString=“从PUBLIC.DATE_状态中选择\“DATE\”,其中日期介于?和?;”
val prepStatement=connection.prepareStatement(查询字符串)
prepStatement.setObject(1,日期1)
prepStatement.setObject(2,日期2)
val rs=prepStatement.executeQuery()
val list=mutableListOf()
while(rs.next()){
添加(rs.getObject(“DATE”,java.util.DATE::class.java))
}
返回列表.toList()
}
}
@StartableByRPC
class QueryDateRangeFlow(val date1: Date, val date2: Date) : FlowLogic<List<Date>>() {

    @Suspendable
    override fun call(): List<Date> {
        val connection = serviceHub.jdbcSession()
        val queryString = "SELECT \"DATE\" FROM PUBLIC.DATE_STATE WHERE DATE BETWEEN ? AND ?;"

        val prepStatement = connection.prepareStatement(queryString)
        prepStatement.setObject(1, date1)
        prepStatement.setObject(2, date2)

        val rs = prepStatement.executeQuery()
        val list = mutableListOf<Date>()
        while (rs.next()) {
            list.add(rs.getObject("DATE", java.util.Date::class.java))
        }
        return list.toList()
    }
}