这里是Axon的新手。
我在Kotlin中定义了一个类:
data class ProjectedQuote(
@Id var submissionId: String,
var periodId: String,
var accountNumber: String
)
它由事件处理程序实例化和更新,然后返回以响应查询。
我需要创建一个查询,该查询通过accountNumber
而不是id
查找ProjectedQuote实例。我不确定该怎么做。
到目前为止,我只做过以下查询:
SELECT q FROM ProjectedQuote q WHERE q.id LIKE CONCAT(:idStartsWith, '%') ORDER BY q.id
我的关注重点是:
如何编写使用accountNumber
而不是id
来查找ProjectedQuote的查询?
我的更广泛的问题是:
如何查看Axon数据库中哪些字段可供查询?
答案 0 :(得分:1)
查询消息通常从事件侦听器创建的视图模型中读取数据。事件侦听器通常基于命令模型已做出的决策来执行逻辑。通常,这涉及更新视图模型或将更新转发到其他组件。
因此,创建和接收视图的机制完全取决于您。 (jpa,spring数据,mybatis,jdbc等。)axon项目的一个很好的例子是https://github.com/idugalic/digital-restaurant
答案 1 :(得分:1)
谢尔盖在这里指出的也很正确。 在这样的应用程序中如何为查询模型建模完全取决于您。因此,选择JPA,JDBC,MongoDB,ElasticSearch,Neo4j ..哪种格式最好包含查询模型套件!
这种自由的存储机制还指出,您的查询模型未存储在“ Axon数据库”中;它存储在您选择的数据库中。
关于如何为查询建模,您可以看看here上如何在Axon中使用QueryMessages
和QueryHandlers
。从Axon的角度来看,这只是消息的另一种专用类型,就像Command-和EventMessages。
使用查询消息,您可以将要执行的查询类型指定为单独的对象,即是查询。
反过来,此查询将由带注释的@QueryHandler
函数处理。
@QueryHandler
带注释的功能将依次执行实际操作,以从您选择用来存储模型的数据库中检索模型。
希望这会给您一些见识!