【问题标题】:Querying nested collections in LinearState states查询 LinearState 状态下的嵌套集合
【发布时间】:2018-08-02 11:44:44
【问题描述】:

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

class ALinearState(val items: List<Item>) : LinearState 
data class Item(name: String, ...)

对于给定的ALinearStatealpha,我们希望存储相同UniqueIdentifier 的版本。每个版本都有一组离散的items。我们希望能够在表中查询匹配过滤器的items,然后恢复匹配过滤后的itemsalpha 的集合状态。

有没有办法做到这一点? 谢谢。

【问题讨论】:

    标签: corda


    【解决方案1】:

    您可以使用任何形式的 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)。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-10-16
    • 1970-01-01
    • 2010-10-17
    • 1970-01-01
    • 1970-01-01
    • 2021-01-26
    • 2011-02-10
    相关资源
    最近更新 更多