首页 > 解决方案 > Axon Framework 表名称与 Oracle + Spring jpa 表自动生成

问题描述

我正在使用 Axon Framework 4.1(没有 Axon Server)和 Oracle 12.1 和 Spring Boot Jpa 2.3.0

当应用程序启动时,我通过这个属性使用休眠spring.jpa.hibernate.ddl-auto=create来生成我的所有表,包括 Axon 的表。结果我得到了这种格式的名称DOMAIN_EVENT_ENTRYTOKEN_ENTRY等等。之后,当我发送命令时,我收到以下错误消息:An event for aggregate [2] at sequence [0] could not be persisted

我认为这是因为 Axon 使用名称搜索表:DOMAINEVENTENTRY但没有找到它,我收到了错误消息。当我将DOMAIN_EVENT_ENTRY表重命名为DOMAINEVENTENTRY一切开始运作良好时。

如果我猜得很好,这就是问题所在。但另一方面,我将 Axon 与 H2 一起使用,它与 name 一起使用DOMAIN_EVENT_ENTRY,所以我猜它是 Oracle 特定的问题?

所以我的问题是如何配置 Axon 表名称以生成正确名称的表而不进行黑客攻击。

并认为在这种情况下最好提供更详细的错误消息。为什么我的事件无法持久化。

我的属性与问题相关:

hibernate.dialect=org.hibernate.dialect.Oracle12cDialect
spring.jpa.hibernate.ddl-auto=create
spring.jpa.generate-ddl=true
spring.datasource.url=
spring.datasource.username=
spring.datasource.password=
spring.datasource.driver.class=oracle.jdbc.driver.OracleDriver

谢了哥们

标签: javaoraclespring-boothibernateaxon

解决方案


更新

这是答案:

spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl

这将创建这种样式的表:DOMAINEVENTENTRY 等。


推荐阅读