У меня есть состояние со следующей конфигурацией
data class NodeState(
override val linearId: UniqueIdentifier = UniqueIdentifier(),
val name: CordaX500Name,
val active: Boolean,
val services: List<Service>):LinearState, QueryableState
, и моя постоянная схема выглядит следующим образом
class PersistentNodeState(
@Column(name = "linearId")
var linearId: String,
@Column(name = "name")
var name: String,
@Column(name = "active")
var active: Boolean,
@ElementCollection(fetch = FetchType.EAGER)
@CollectionTable(name = "node_services",
joinColumns = arrayOf(
JoinColumn(name = "output_index", referencedColumnName = "output_index"),
JoinColumn(name = "transaction_id", referencedColumnName = "transaction_id")
)
)
@Column(name = "service")
var services: Set<String>
Теперь я хотел бы запросить состояние с помощью VaultQuery, аналогично следующему запросу SQL.Как мне это сделать?
SELECT * FROM NODE_STATE as A where EXISTS (select * from NODE_SERVICES as B where B.TRANSACTION_ID = A.TRANSACTION_ID AND B.SERVICE = 'LEAD_COUNSEL')
Как мы используем предоставляемый Corda VaultQuery API для запуска подзапроса с предложением EXISTS ??