【发布时间】:2018-10-22 01:38:04
【问题描述】:
我已经浏览了 spring data jpa 参考文档 在 Spring Boot 中配置数据源,并使用 LocalcontainerEntityManagerFactoryBean 和 transactionManager..etc,但运行它 有错误
但是我想配置一个mysql的数据源,单个数据源。 这是配置类代码:
@Configuration
@EnableJpaRepositories
@EnableTransactionManagement
public class DataSourceConfig {
@Bean
@ConfigurationProperties(prefix="oneslide.datasource")
public DataSource dataSource() {
return DataSourceBuilder.create().build();
}
@Bean
public LocalContainerEntityManagerFactoryBean entityManagerFactory() {
HibernateJpaVendorAdapter vendor=new HibernateJpaVendorAdapter();
vendor.setGenerateDdl(true);
LocalContainerEntityManagerFactoryBean factory=new LocalContainerEntityManagerFactoryBean();
factory.setJpaVendorAdapter(vendor);
factory.setPackagesToScan("com.oneslide.multiDataSource.domain");
factory.setDataSource(dataSource());
return factory;
}
@Bean
public PlatformTransactionManager transactionManager(EntityManagerFactory entityManagerFactory) {
JpaTransactionManager transactionManager=new JpaTransactionManager();
transactionManager.setEntityManagerFactory(entityManagerFactory);
return transactionManager;
}
}
我不希望用户DatasourceBuilder.create.url().password().. 像这样的链调用,我只想在其中配置我的 sql 连接元数据
application.properties with onelide.datasource namespce.并尝试使用 LocalContainerEntityManagerFactory Bean,而不是使用教程的方式
使用 spring.datasource.* 属性。
但是当我运行它时,数据源调试信息为空,它是异常日志的摘要:
init 方法调用失败;嵌套异常是 org.hibernate.service.spi.ServiceException:无法创建请求 服务[org.hibernate.engine.jdbc.env.spi.JdbcEnvironment]
: 访问 DialectResolutionInfo 时不能为空 'hibernate.dialect' 未设置
帮帮我,非常感谢。
【问题讨论】:
-
如果不需要配置类,就使用配置文件...
-
我想用 javaconfig 配置数据源,并在 application.properties 中外部化自定义命名空间如 oneslide.datasource.url 中的数据源配置,因为我将很快配置多数据源。
-
关键混淆是我在我的代码中使用了@ConfigurationProperties(prefix="oneslide.datasource"),但它无法加载我的数据源元数据application.properties
标签: java mysql spring-boot