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一起使用,并且其名称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

谢谢, 伴侣

解决方法

更新

这是答案:

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

这将以以下样式创建表:DOMAINEVENTENTRY等。