Add multi-datasource module: two databases with per-database DataSource, Flyway, EntityManagerFactory and transaction manager on Boot 4.1

Working setup plus one small application per way of getting it wrong (no @Primary, @Primary only, url vs jdbc-url, wrong repository package, Flyway auto-configuration), plain vs named @Transactional, and ChainedTransactionManager with a failing commit. Transcripts are written by the tests.

Co-Authored-By: Claude Sonnet 5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01Uu7q8vPeREyT4218EJPzz1
This commit is contained in:
Claude
2026-09-24 09:38:27 +00:00
parent d6b76c57db
commit e59ff029a1
44 changed files with 1465 additions and 0 deletions
@@ -0,0 +1,25 @@
# Spring Boot's Flyway auto-configuration when there are two databases
--- A. nothing configured: Flyway targets the @Primary DataSource and scans classpath:db/migration ---
startup failed: BeanCreationException -> BeanCreationException -> FlywayException
root cause: org.flywaydb.core.api.FlywayException: Found more than one migration with version 1
Offenders:
-> <multi-datasource>/target/classes/db/migration/customers/V1__customer.sql (SQL)
-> <multi-datasource>/target/classes/db/migration/orders/V1__purchase_order.sql (SQL)
--- B. spring.flyway.locations=classpath:db/migration/customers ---
startup failed: BeanCreationException -> PersistenceException -> SchemaManagementException
root cause: org.hibernate.tool.schema.spi.SchemaManagementException: Schema validation: missing table [purchase_order]
application started (Hibernate validation switched off so the databases can be inspected)
customers database tables: [CUSTOMER, flyway_schema_history]
orders database tables: []
--- C. as B, plus one hand-made Flyway bean for the orders database ---
startup failed: BeanCreationException -> PersistenceException -> SchemaManagementException
root cause: org.hibernate.tool.schema.spi.SchemaManagementException: Schema validation: missing table [customer]
application started (Hibernate validation switched off so the databases can be inspected)
customers database tables: []
orders database tables: [PURCHASE_ORDER, flyway_schema_history]