Я сохранил всю свою модель, контроллер и классы репозитория отдельно для отдельных пакетов, например, следующие: < /p>
com.multidb.primary.controller
com.multidb.primary.model
com.multidb.primary.repository
com.multidb.secondary.controller
com.multidb.secondary.model
com.multidb.secondary.repository
[/code]
и создал 2 отдельного класса конфигурации для первичного и вторичного. Я продолжал в пакете com.multidb.config с promiserconfig.java и secondaryconfig.java < /p>
Код: Выделить всё
com.multidb.config.PrimaryConfig.java
com.multidb.config.SecondaryConfig.java
Код: Выделить всё
@Configuration
@EnableJpaRepositories(
basePackages = "com.multidb.primary.repository",
entityManagerFactoryRef = "primaryEntityManagerFactory",
transactionManagerRef = "primaryTransactionManager"
)
public class PrimaryConfig {
@Bean(name = "primaryDataSource")
@ConfigurationProperties(prefix = "spring.datasource.primary")
public DataSource primaryDataSource() {
return DataSourceBuilder.create().build();
}
@Bean(name = "primaryEntityManagerFactory")
public LocalContainerEntityManagerFactoryBean primaryEntityManagerFactory(
@Qualifier("primaryDataSource") DataSource dataSource) {
LocalContainerEntityManagerFactoryBean em = new LocalContainerEntityManagerFactoryBean();
em.setDataSource(dataSource);
em.setPackagesToScan(new String[] { "com.multidb.primary.model" });
HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
em.setJpaVendorAdapter(vendorAdapter);
return em;
}
@Bean(name = "primaryTransactionManager")
public PlatformTransactionManager primaryTransactionManager(
@Qualifier("primaryEntityManagerFactory") EntityManagerFactory entityManagerFactory)
{
return new JpaTransactionManager(entityManagerFactory);
}
}
Код: Выделить всё
@Configuration
@EnableJpaRepositories(
basePackages = "com.multidb.secondary.repository",
entityManagerFactoryRef = "secondaryEntityManagerFactory",
transactionManagerRef = "secondaryTransactionManager"
)
public class SecondaryConfig {
@Bean(name = "secondaryDataSource")
@ConfigurationProperties(prefix = "spring.datasource.secondary")
public DataSource secondaryDataSource() {
return DataSourceBuilder.create().build();
}
@Bean(name = "secondaryEntityManagerFactory")
public LocalContainerEntityManagerFactoryBean secondaryEntityManagerFactory(
@Qualifier("secondaryDataSource") DataSource dataSource) {
LocalContainerEntityManagerFactoryBean em = new LocalContainerEntityManagerFactoryBean();
em.setDataSource(dataSource);
em.setPackagesToScan(new String[] { "com.multidb.secondary.model" });
HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
em.setJpaVendorAdapter(vendorAdapter);
return em;
}
@Bean(name = "secondaryTransactionManager")
public PlatformTransactionManager secondaryTransactionManager(
@Qualifier("secondaryEntityManagerFactory") EntityManagerFactory entityManagerFactory) {
return new JpaTransactionManager(entityManagerFactory);
}
}
< /code>
[b] Ошибка, как следующее: < /strong> < /p>
исправить класс вашего приложения, чтобы он содержит единую совместимую версию org.springframework.data.jpa.repository.config.jparepositoryConficeRame.data.jpa.Repository.config.jparepositoryConficeRame.data.jpa.Repository.config.jparepositoryConficeRame. java.lang.illegalstateexception: java.lang.nosuchmethoderror: 'void org.springframework.data.jpa.repository.config.jparepositoryconfigextension.registerlazyifnotalredeged (java.util.supplier, org.springframework.beans.factory.support.beandefinitionregistry, java.lang.string, java.lang.object) '
Указанные учебники: [/b]
[b] />https://mookypoo.medium.com/spring-boot-connect-to-multiple-databases-4cd56773fbcc написан ммутле /> < /li>
Настройка и используйте два источника данных < /p>
< /li>
< /ul>
P> Strong>pom.xml:[/b]
>>
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
4.0.0
org.springframework.boot
spring-boot-starter-parent
3.5.4
com.multidb
MultiDb
0.0.1-SNAPSHOT
war
MultiDb
Demo project for Spring Boot
17
org.springframework.boot
spring-boot-starter-data-jpa
org.springframework.boot
spring-boot-starter-web
org.postgresql
postgresql
runtime
org.springframework.boot
spring-boot-starter-tomcat
provided
org.springframework.boot
spring-boot-starter-test
test
org.springframework.boot
spring-boot-maven-plugin
Код: Выделить всё
org.springframework.boot
spring-boot-starter-parent
3.3.3 // changed from 3.5.4 to 3.3.3
Код: Выделить всё
Caused by: org.hibernate.service.spi.ServiceException: Unable to create requested service [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment] due to: Unable to determine Dialect without JDBC metadata (please set 'jakarta.persistence.jdbc.url' for common cases or 'hibernate.dialect' when a custom Dialect implementation must be provided)Может ли кто -нибудь предложить, куда я не неправильно внедрил или предложил хорошую документацию?>
Подробнее здесь: https://stackoverflow.com/questions/797 ... ile-config