PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Convertitore del tipo di identificatore aggregato Axon

Onestamente, hai approfondito la questione qui @Zon. Non sono sicuro di poterti aiutare a sufficienza, ma ci proverò comunque.

Il punto di ricerca 1 è ovviamente la soluzione più pragmatica per far funzionare le cose in questo momento. Se noterai l'"inefficienza" di String rispetto a UUID è qualcosa per cui mi sarebbe difficile. Quindi, se questo è un no no assoluto, l'indagine dovrebbe procedere. Altrimenti, ovviamente, fa il suo lavoro.

Quando si tratta di ricercare i punti 2 e 3, credo che tu stia riscontrando un problema con il dialetto utilizzato per PostgreSQL, anche se qui non sono sicuro al 100%. Soprattutto PostgreSQL brandisce un paio di tipi "fantastici", ma questi non funzionano sempre automaticamente in tutti gli scenari. Sto basando la mia "ipotesi" qui sul forzare PostgreSQL a usare BYTEA invece di OID nel caso in cui lo desideri, dovresti abbassare il TOAST di Postgres capacità. Ciò diventa particolarmente utile se scegli di utilizzare Postgres per il tuo negozio di eventi e vuoi essere in grado di vedere effettivamente i contenuti degli eventi. Questo post sul blog, ad esempio, specifica come affrontarlo. Ancora più importante, questo blog post mostra come puoi, ad esempio, regolare il dialetto utilizzato. Forse potrebbe servirti nelle soluzioni 2 e 3?

L'opzione 4 dovrebbe in questo caso essere la soluzione più logica da adottare. Ma deduco dalla tua risposta che al momento non sei riuscito a farlo funzionare. Quando si combina Axon con Spring, SpringAxonAutoConfigurer (da cui ti riferisci a registerAggregateBeanDefinitions metodo da credo) verificherà automaticamente la presenza di bean configurabili sul tuo Aggregate. Lo fa in base ai campi definiti in @Aggregate (cioè l'annotazione dello stereotipo di primavera di Axon). Più in particolare, puoi utilizzare il repository campo nel @Aggregate per definire il nome del bean del repository che desideri utilizzare.

Dovresti quindi essere semplicemente in grado di fornire un GenericJpaRepository bean con il identifierConverter desiderato . Il nome di quel bean può essere quindi specificato nel @Aggregate annotazione sul tuo MyAggregate , in modo che la configurazione automatica di Axon possa rilevarlo correttamente. Spero che questo ti aiuti!