在LinearState状态中查询嵌套集合

时间:2018-02-22 15:00:09

标签: corda

我们是否有一个嵌套在状态中的可查询持久集合的模式?

ALinearState

对于给定的alphaUniqueIdentifier,我们希望存储相同items的版本。每个版本都有一组items。我们希望能够查询与过滤器匹配的alpha表,然后恢复与过滤的items匹配的{{1}}的设置状态。

有没有办法实现这个目标? 谢谢。

1 个答案:

答案 0 :(得分:4)

您可以使用任何形式的JPA / Hibernate模型定义来代表合同状态。例如:

object TestSchema : MappedSchema(SchemaFamily::class.java, 1, setOf(Parent::class.java, Child::class.java)) {
    @Entity
    @Table(name = "Parents")
    class Parent : PersistentState() {
        @OneToMany(fetch = FetchType.LAZY)
        @JoinColumns(JoinColumn(name = "transaction_id", referencedColumnName = "transaction_id"), JoinColumn(name = "output_index", referencedColumnName = "output_index"))
        @OrderColumn
        @Cascade(CascadeType.PERSIST)
        var children: MutableSet<Child> = mutableSetOf()
    }

    @Entity
    @Table(name = "Children")
    class Child {
        @Id
        @GeneratedValue
        @Column(name = "child_id", unique = true, nullable = false)
        var childId: Int? = null

        @ManyToOne(fetch = FetchType.LAZY)
        @JoinColumns(JoinColumn(name = "transaction_id", referencedColumnName = "transaction_id"), JoinColumn(name = "output_index", referencedColumnName = "output_index"))
        var parent: Parent? = null
    }
}

就后续查询而言,最好使用JDBC查询来执行您可能拥有的任何自定义查询(使用标准JDBC或Hibernate)。