首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spring boot JPA与Axon

Spring boot JPA与Axon
EN

Stack Overflow用户
提问于 2021-09-14 04:50:02
回答 2查看 397关注 0票数 0

我想使用Axon框架和Axon Server作为我的事件存储和事件总线,以及包含spring data jpa的spring boot项目。

我有一个启动两个容器的docker-compose -- postgres dbAxon Server。我不希望axon使用postgres作为它的事件存储,我希望它使用Axon Server作为事件存储。因此,我将@EntityScan添加到主类以指向我自己的JPA实体,当我启动我的spring boot应用程序时,我得到了以下异常:

代码语言:javascript
复制
Caused by: java.util.concurrent.ExecutionException: org.axonframework.lifecycle.LifecycleHandlerInvocationException: Failed during invocation of lifecycle handler [public void org.axonframework.axonserver.connector.processor.EventProcessorControlService.start()] on component [org.axonframework.axonserver.connector.processor.EventProcessorControlService@32f2de5c]

Caused by: org.axonframework.lifecycle.LifecycleHandlerInvocationException: Failed during invocation of lifecycle handler [public void org.axonframework.axonserver.connector.processor.EventProcessorControlService.start()] on component [org.axonframework.axonserver.connector.processor.EventProcessorControlService@32f2de5c]

Caused by: java.lang.reflect.InvocationTargetException: null

Caused by: org.axonframework.eventhandling.tokenstore.UnableToRetrieveIdentifierException: Exception occurred while trying to establish storage identifier

Caused by: java.lang.IllegalArgumentException: Unable to locate persister: org.axonframework.eventhandling.tokenstore.jpa.TokenEntry

Caused by: org.hibernate.UnknownEntityTypeException: Unable to locate persister: org.axonframework.eventhandling.tokenstore.jpa.TokenEntry

在我添加所有的JPA依赖之前,它工作得很好,但是在我为jpa添加了spring-boot-starter之后,我得到了上面的异常

我怎么才能修复它?

EN

回答 2

Stack Overflow用户

发布于 2021-09-14 08:54:48

默认情况下,Axon Framework会尝试在postgres上创建一些表。需要这些表来管理令牌、Sagas等。由于添加了@EntityScan注释,因此现有的默认扫描机制将不再起作用。

你可以快速查看它的ref guide如何解决你的问题。

引用自文档:

要注册Axon的

实体,请包含相关的包,如下所述:

  • org.axonframework.eventhandling.tokenstore包含Event Processors.
  • org.axonframework.modelling.saga.repository.jpa使用的JPA所需的实体包含持久化所需的实体Sagas
  • org.axonframework.eventsourcing.eventstore.jpa包含使用关系数据库作为事件存储区时TokenStore事件存储引擎所需的实体。
票数 0
EN

Stack Overflow用户

发布于 2021-09-14 21:51:23

我设法让它按如下方式工作:

我删除了@EntityScan并使用autoconfig扫描所有实体

我添加到application.properties文件

代码语言:javascript
复制
spring.jpa.hibernate.ddl-auto=update

数据库中axon需要的所有表都在那里。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69171943

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档