Querying nested collections in LinearState states

点点圈 提交于 2019-11-28 04:47:54

问题


Do we have a pattern for queryable persistent collections nested within a state?

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

For a given ALinearState, alpha we wish to store versions for the same UniqueIdentifier. Each version will have a discrete set of items. We want to be able to query a table for items that match a filter, then recover the set states of alpha that match the filtered items.

Is there a way of achieving this? Thanks.


回答1:


You can represent you Contract States using any form of JPA/Hibernate model definition. For example:

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
    }
}

In terms of subsequent query, it would probably be best to use a JDBC query to execute any custom queries you may have (using standard JDBC or Hibernate).



来源:https://stackoverflow.com/questions/48930564/querying-nested-collections-in-linearstate-states

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!