Honestamente, você se aprofundou bastante no assunto aqui @Zon. Não tenho certeza se posso ajudá-lo o suficiente, mas vou tentar de qualquer maneira.
O ponto de pesquisa 1 é obviamente a solução mais pragmática para fazer as coisas funcionarem agora. Se você vai notar a "ineficiência" de
String
comparado com UUID
é algo que eu seria duramente pressionado. Portanto, se isso for um absoluto não, não, a investigação deve prosseguir. Caso contrário, ele faz o trabalho, é claro. Quando se trata dos pontos de pesquisa 2 e 3, acredito que você esteja encontrando um problema com o dialeto usado para o PostgreSQL, embora eu não tenha 100% de certeza aqui. Especialmente o PostgreSQL apresenta alguns tipos "incríveis", mas nem sempre funcionam automaticamente em todos os cenários. Estou baseando minha "adivinhação" aqui em forçar o PostgreSQL a usar
BYTEA
em vez de OID
caso você queira baixar o TOAST" do Postgres
capacidade. Isso se torna especialmente útil se você optar por usar o Postgres para sua loja de eventos e quiser realmente ver o conteúdo dos eventos. Esta postagem de blog, por exemplo, especifica como lidar com isso. Mais importante, este blog
post mostra como você pode, por exemplo, ajustar o dialeto que está sendo usado. Talvez isso possa atendê-lo nas soluções 2 e 3? A opção 4 deve, neste caso, ser a solução mais lógica a tomar. Mas deduzo de sua resposta que você não conseguiu fazê-lo funcionar no momento. Ao combinar Axon com Spring, o
SpringAxonAutoConfigurer
(do qual você está se referindo a registerAggregateBeanDefinitions
método de eu acredito) verificará automaticamente os beans configuráveis no seu Aggregate. Ele faz isso com base em campos definidos no @Aggregate
(ou seja, anotação de estereótipo Spring da Axon). Mais especificamente, você pode usar o repository
campo no @Aggregate
para definir o nome do bean do repositório que você deseja usar. Você deve simplesmente ser capaz de fornecer um
GenericJpaRepository
bean com o identifierConverter
desejado . O nome desse bean pode ser especificado no @Aggregate
anotação em seu MyAggregate
, para que a configuração automática do Axon possa captá-lo corretamente. Espero que isto te ajude!