Axon — хранилище событий JPA для MySQL

#java #mysql #jpa #axon

#java #mysql #jpa #axon

Вопрос:

Я пытаюсь реализовать приложение Axon, используя хранилище событий JPA и базу данных mysql. Hibernate автоматически генерирует все таблицы, и пока все работает нормально.

Мой вопрос — могу ли я заменить таблицу mysql hibernate_sequence для AUTO_INCREMENT столбцов в Mysql. Я предполагаю, что для того, чтобы сделать это, мне нужно было бы изменить исходный код Axon, поскольку я не могу найти другой настраиваемый способ изменить @Id аннотацию для события домена @Entity или других объектов?

Обновить

Хорошо, мне удалось это сделать, поместив новый файл в srcmainresourcesMETA-INForm.xml со следующим кодом:

 <?xml version="1.0" encoding="UTF-8" ?>
<entity-mappings xmlns="http://java.sun.com/xml/ns/persistence/orm"
                 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                 xsi:schemaLocation="http://java.sun.com/xml/ns/persistence/orm http://java.sun.com/xml/ns/persistence/orm_2_0.xsd"
                 version="2.0">

    <mapped-superclass class="org.axonframework.eventhandling.AbstractSequencedDomainEventEntry" access="FIELD">
        <attributes>
            <id name="globalIndex">
                <generated-value strategy="IDENTITY"/>
            </id>
        </attributes>
    </mapped-superclass>

    <entity class="org.axonframework.modelling.saga.repository.jpa.AssociationValueEntry" access="FIELD">
        <attributes>
            <id name="id">
                <generated-value strategy="IDENTITY"/>
            </id>
        </attributes>
    </entity>

</entity-mappings>
  

Ответ №1:

Вы могли бы внести эту корректировку с помощью кода, это правда. Однако более просто указать orm.xml файл в вашем проекте, который для некоторых таблиц ( domain_event_entry таблицы в вашем сценарии, я полагаю) может корректировать определенные столбцы. Там вы должны быть в состоянии настроить генератор последовательностей так, как вы хотите, чтобы это было.

Надеюсь, это поможет!