infobip / infobip-spring-data-querydsl

Infobip Spring Data Querydsl provides new functionality that enables the user to leverage the full power of Querydsl API on top of Spring Data repository infrastructure.
Apache License 2.0
278 stars 57 forks source link

runtime error multiple data source #30

Closed davoodshiraz closed 3 years ago

davoodshiraz commented 3 years ago

hi please help me. i used multiple data source primey datasource: mysql

spring.datasource.jdbc-url=jdbc:mysql://localhost:3306/databaseName spring.datasource.username=root spring.datasource.password= spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

datasource1: sqlserver

spring.datasource2.jdbc-url=jdbc:sqlserver://localhost:1433;databaseName=MyDatabase spring.datasource2.username=xxxxxxx spring.datasource2.password=xxxxxxx spring.datasource2.driverClassName=com.microsoft.sqlserver.jdbc.SQLServerDriver

configigurations:

@Configuration @EnableJdbcRepositories( jdbcOperationsRef = "namedParameterJdbcOperations", basePackages = {"com.sms.gateway.common.repository"}) public class DataJdbcConfiguration extends AbstractJdbcConfiguration {

@Primary
@Bean
public JdbcTemplate mysqlJdbcTemplate(DataSource dsMssql) {
    return new JdbcTemplate(dsMssql);
}

@Primary
@Bean
@ConfigurationProperties(prefix = "spring.datasource")
public DataSource dataSource() {
    return DataSourceBuilder.create()
            .build();
}

@Primary
@Bean
NamedParameterJdbcOperations namedParameterJdbcOperations(DataSource dataSource) {
    return new NamedParameterJdbcTemplate(dataSource);
}

}

@Configuration @EnableJdbcRepositories( jdbcOperationsRef = "mssqlDbJdbcOperations", basePackages = {"com.sms.gateway.common.archived.repository"}) public class ArchivedConfiguration extends AbstractJdbcConfiguration {

@Bean(name = "smsServerMssqlDbJdbcTemplate")
public JdbcTemplate smsServerMssqlJdbcTemplate(@Qualifier("smsServerMssqlDb") DataSource dsMssql) {
    return new JdbcTemplate(dsMssql);
}

@Bean(name = "smsServerMssqlDb")
@ConfigurationProperties(prefix = "spring.datasource2")
public DataSource smsServerDataSource() {
    return DataSourceBuilder.create()
            .build();
}

@Bean(name = "mssqlDbJdbcOperations")
NamedParameterJdbcOperations namedParameterJdbcOperations(@Qualifier("smsServerMssqlDb") DataSource dataSource) {
    return new NamedParameterJdbcTemplate(dataSource);
}

}

error: Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.data.relational.core.dialect.Dialect]: Factory method 'jdbcDialect' threw exception; nested exception is java.lang.IllegalArgumentException: dataSource or dataSourceClassName or jdbcUrl is required. at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:185) ~[spring-beans-5.3.4.jar:5.3.4] at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:653) ~[spring-beans-5.3.4.jar:5.3.4] ... 51 common frames omitted Caused by: java.lang.IllegalArgumentException: dataSource or dataSourceClassName or jdbcUrl is required. at com.zaxxer.hikari.HikariConfig.validate(HikariConfig.java:1004) ~[HikariCP-3.4.5.jar:na] at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:109) ~[HikariCP-3.4.5.jar:na] at org.springframework.jdbc.datasource.DataSourceUtils.fetchConnection(DataSourceUtils.java:158) ~[spring-jdbc-5.3.4.jar:5.3.4] at org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(DataSourceUtils.java:116) ~[spring-jdbc-5.3.4.jar:5.3.4] at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:79) ~[spring-jdbc-5.3.4.jar:5.3.4] at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:330) ~[spring-jdbc-5.3.4.jar:5.3.4] at org.springframework.data.jdbc.repository.config.DialectResolver$DefaultDialectProvider.getDialect(DialectResolver.java:107) ~[spring-data-jdbc-2.1.5.jar:2.1.5] at org.springframework.data.jdbc.repository.config.DialectResolver.lambda$getDialect$0(DialectResolver.java:77) ~[spring-data-jdbc-2.1.5.jar:2.1.5] at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195) ~[na:na] at java.base/java.util.ArrayList$ArrayListSpliterator.tryAdvance(ArrayList.java:1632) ~[na:na] at java.base/java.util.stream.ReferencePipeline.forEachWithCancel(ReferencePipeline.java:127) ~[na:na] at java.base/java.util.stream.AbstractPipeline.copyIntoWithCancel(AbstractPipeline.java:502) ~[na:na] at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:488) ~[na:na] at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474) ~[na:na] at java.base/java.util.stream.FindOps$FindOp.evaluateSequential(FindOps.java:150) ~[na:na] at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) ~[na:na] at java.base/java.util.stream.ReferencePipeline.findFirst(ReferencePipeline.java:543) ~[na:na] at org.springframework.data.jdbc.repository.config.DialectResolver.getDialect(DialectResolver.java:79) ~[spring-data-jdbc-2.1.5.jar:2.1.5] at org.springframework.data.jdbc.repository.config.AbstractJdbcConfiguration.jdbcDialect(AbstractJdbcConfiguration.java:144) ~[spring-data-jdbc-2.1.5.jar:2.1.5] at com.sms.gateway.common.archived.ArchivedConfiguration$$EnhancerBySpringCGLIB$$6b355c23.CGLIB$jdbcDialect$7() ~[classes/:na] at com.sms.gateway.common.archived.ArchivedConfiguration$$EnhancerBySpringCGLIB$$6b355c23$$FastClassBySpringCGLIB$$e97ae8b7.invoke() ~[classes/:na] at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:244) ~[spring-core-5.3.4.jar:5.3.4] at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:331) ~[spring-context-5.3.4.jar:5.3.4] at com.sms.gateway.common.archived.ArchivedConfiguration$$EnhancerBySpringCGLIB$$6b355c23.jdbcDialect() ~[classes/:na] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:na] at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na] at java.base/java.lang.reflect.Method.invoke(Method.java:566) ~[na:na] at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:154) ~[spring-beans-5.3.4.jar:5.3.4] ... 52 common frames omitted

Thanks.

lpandzic commented 3 years ago

Is your project working without Infobip Spring Data Querydsl? Can you maybe provide source code that reproduces the issue? I suspect it has something to do with wiring of primary datasource but it's hard to say without more source code.

davoodshiraz commented 3 years ago

Solve problem thanks