Почему каркас аксона не может быть вставлен в собственную таблицу? - PullRequest
0 голосов
/ 21 января 2020

Я только начал использовать 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).

Я понимаю, что нарушено уникальное ограничение, но таблица управляется инфраструктурой аксонов. Я протестировал новый проект и посмотрел базу данных. И таблица token_entry не содержала столбец _identifier_mapper_processor_name. Затем я посмотрел на базу данных моего старого проекта, и таблица содержала два дополнительных столбца: _identifier_mapper_processor_name, _identifier_mapper_segment.

Почему таблица структуры аксонов иногда содержит эти дополнительные столбцы, а иногда нет?

Ответы [ 2 ]

3 голосов
/ 21 января 2020

Проблема, похоже, в спящем режиме. Стратегия именования ImplicitNamingStrategyComponentPathImpl (которая используется в моем проекте) имеет проблему с @IdClass: Ticket .

В структуре аксонов @IdClass используется для таблицы token_entry. Это приводит к ошибке, описанной выше.

2 голосов
/ 21 января 2020

Ни _identifier_mapper_processor_name, ни _identifier_mapper_segment не встречаются при поиске на странице Axon Framework GitHub . Таким образом, ни в текущем фреймворковом коде, ни в каких-либо фиксациях за последние 10 лет существования Аксона.

Следовательно, мне очень трудно понять, как вы в итоге получили оба столбца для начала. Не могли бы вы рассказать, какую версию Axon вы используете, и если вы также добавляете какие-либо расширения Axon Framework в проект?

Что касается решения проблемы, я бы предположил, что при создании token_entry таблица в вашем существующем проекте. Любая специфика, которую вы делаете в своем существующем проекте, в том, что касается Аксона и / или модификации базы данных, будет полезна для определения причины этой проблемы.

...