我刚开始使用Axon-Framework,我非常喜欢它。所以我想把它集成到一个现有的项目中。但是当我尝试启动我的应用程序时,我得到了以下错误:
Fetch Segments for Processor 'my.package.name' failed: org.hibernate.exception.ConstraintViolationException: could not execute statement. Preparing for retry in 4s
ERROR: null value in column "_identifier_mapper_processor_name" violates not-null constraint
Detail: Failing row contains (my.package.name, 0, null, null, null, 2020-01-21T09:32:28.189Z, null, null).我确实理解违反了唯一约束,但是表是由axon框架管理的。我测试了一个新项目,并查看了数据库。并且表token_entry不包含_identifier_mapper_processor_name列。然后,我查看了旧项目的数据库,表中包含两个额外的列:_identifier_mapper_processor_name、_identifier_mapper_segment。
为什么axon框架的表有时包含这些附加列,有时又不包含?
发布于 2020-01-21 22:58:22
问题似乎是处于休眠状态。@IdClass:Ticket使用了ImplicitNamingStrategyComponentPathImpl命名策略(我的项目使用了它)。
axon框架对token_entry表使用@IdClass。这将导致上述错误。
发布于 2020-01-21 18:46:19
在Axon Framework GitHub页面上执行的任何搜索中都不会出现_identifier_mapper_processor_name和_identifier_mapper_segment。因此,在当前的框架代码中没有,也没有在Axon存在的过去10年中的任何提交。
因此,我很难理解您一开始是如何同时使用这两篇专栏文章的。您是否介意分享您正在使用的Axon版本,以及您是否也在项目中添加了Axon框架扩展?
至于问题的解决,我假设在现有项目中创建token_entry表时会有一些东西被标记。就Axon和/或数据库修改而言,您在现有项目中所做的任何细节都将有助于推断此问题的根源。
https://stackoverflow.com/questions/59838176
复制相似问题