我有一个spring Boot 应用程序,它使用spring data jdbc并连接到两个数据库,其中一个是postgres,一个是oracle,我通过jdbc存储库(org.springframework.data.repository.Repository)访问它们。一般来说,这样做效果很好,但是所有的存储库都使用相同的方言。我怎样才能根据查询所用的jdbc存储库使用不同的jdbc方言呢?
ozxc1zmp1#
也许这对将来的其他人有帮助:您可以实现自己的JdbcRepositoryFactoryBean版本,并在其中硬编码Dialect。然后,定制类可以与@EnableJdbcRepositories注解一起使用。Oracle数据库的配置示例:
JdbcRepositoryFactoryBean
@EnableJdbcRepositories
@EnableJdbcRepositories(basePackageClasses = my.oracle.DbRepository.class, jdbcOperationsRef = "secondaryNamedParameterJdbcTemplate", transactionManagerRef = "secondaryTransactionManager", repositoryFactoryBeanClass = OracleRepositoryFactoryBean.class)
自定义工厂Bean的示例:
public class OracleRepositoryFactoryBean<T extends Repository<S, ID>, S, ID extends Serializable> extends JdbcRepositoryFactoryBean<T, S, ID> { // override constructor and set dialect // override setDialect to be safe }
如果有更优雅的解决方案,请添加它。
1条答案
按热度按时间ozxc1zmp1#
也许这对将来的其他人有帮助:
您可以实现自己的
JdbcRepositoryFactoryBean
版本,并在其中硬编码Dialect。然后,定制类可以与@EnableJdbcRepositories
注解一起使用。Oracle数据库的配置示例:
自定义工厂Bean的示例:
如果有更优雅的解决方案,请添加它。