Upřímně, šel jsi do této záležitosti docela hluboko @Zon. Nejste si jisti, zda vám mohu dostatečně pomoci, ale přesto to zkusím.
Výzkumný bod 1 je zjevně nejpragmatičtějším řešením, jak uvést věci do chodu hned teď. Pokud si všimnete "neefektivnosti" String
ve srovnání s UUID
je něco, na co bych byl těžce natlačen. Takže pokud je to absolutní ne ne, vyšetřování by mělo pokračovat. Jinak to samozřejmě udělá svou práci.
Pokud jde o body výzkumu 2 a 3, domnívám se, že narazíte na problém s dialektem používaným pro PostgreSQL, i když si zde nejsem 100% jistý. Zejména PostgreSQL nabízí několik "úžasných" typů, ale ne vždy automaticky fungují ve všech scénářích. Zakládám zde své "hádání" na vynucení PostgreSQL k použití BYTEA
místo OID
v případě, že chcete, měli byste stáhnout Postgres' TOAST
schopnost. To se stane obzvláště užitečné, pokud se rozhodnete používat Postgres pro svůj obchod s událostmi a chcete mít možnost skutečně vidět obsah událostí. Tento příspěvek na blogu například uvádí, jak se s tím vypořádat. A co je důležitější, tento blog
příspěvek ukazuje, jak byste mohli například upravit používaný dialekt. Možná by vám to mohlo posloužit v řešeních 2 a 3?
Možnost 4 by v tomto případě měla být nejlogičtějším řešením. Ale z vaší odpovědi usuzuji, že vám to v tuto chvíli nefungovalo. Při česání Axon s Springem, SpringAxonAutoConfigurer
(ze kterého odkazujete na registerAggregateBeanDefinitions
metoda od věřím) automaticky zkontroluje konfigurovatelné fazole na vašem Agregátu. Činí tak na základě polí definovaných v @Aggregate
(tj. anotace stereotypu Axon's Spring). Konkrétněji můžete použít repository
pole v @Aggregate
k definování názvu beanu úložiště, které chcete použít.
Měli byste tedy být schopni poskytnout GenericJpaRepository
bean s požadovaným identifierConverter
. Název tohoto beanu pak může být specifikován v @Aggregate
anotace na vašem MyAggregate
, aby to automatická konfigurace Axonu mohla správně vybrat. Doufám, že vám to pomůže!