Cómo consultar en un campo en una colección anidada de un estado primario usando VaultCustomQuery

Tengo una relación de uno a muchos en la que intento agregar una lista de objeto / clase en mi estado. es decir, tengo un estado de contrato que tiene una lista de archivos adjuntosList<Attachment>, dóndeAttachment es solo una clase con campos comoattachmentHash, uploadedDate, fileType

Quería consultar con algo en el elemento secundario, pero recibo un error de sintaxis"AttachmentEntity is not a subtype of PersistentState"

QueryCriteria.VaultCustomQueryCriteria(
builder { (ContractSchemaV1.AttachmentEntity::uploadDate).equal(givenDate) })) 

Dejo que AttachmentEntity sea una subclase dePersistentState y el nodo se inició con el error

org.hibernate.AnnotationException: net.corda.core.schemas.PersistentStateRef 
must not have @Id properties when used as an @EmbeddedId: project.schemas.ContractSchemaV1$AttachmentEntity.stateRef

Parece que estoy haciendo algo mal, ¿cuál es la mejor manera de representar una colección de clases de datos en el estado y traducir eso en un esquema? ¿O es esta la forma correcta, pero no hay forma de consultar la colección anidada usandoVaultCustomQuery?

La entidad de ejemplo a continuación.

object ContractSchema

 object ContractSchemaV1 : MappedSchema(schemaFamily = ContractSchema.javaClass, version = 1,
    mappedTypes = listOf(ContractEntity::class.java, AttachmentEntity:class.java)) {
@Entity
@Table(name = "contracts")
class ContractEntity(

        @Column(name = "issued_date")
        var issuedDate: Instant,

        @Column(name = "linear_id")
        var linearId: String,

        @OneToMany(fetch = FetchType.LAZY, cascade = arrayOf(CascadeType.PERSIST))
        @JoinColumns(
                JoinColumn(name = "transaction_id", referencedColumnName = "transaction_id"),
                JoinColumn(name = "output_index", referencedColumnName = "output_index"))
        var attachments: MutableSet<AttachmentEntity> = emptyList(),

) : PersistentState()

@Entity
@Table(name = "attachments")
class AttachmentEntity (

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id", unique = true, nullable = false)
    var id: Long? = null,

    @Column(name = "attachment_hash", nullable = false)
    var attachmentHash: String? = null,

    @Column(name = "attachment_name", nullable = false)
    var attachmentName: String? = null,

    @Column(name = "upload_date", nullable = true)
    var uploadDate: Instant? = null)
}

Respuestas a la pregunta(1)

Su respuesta a la pregunta