2014-01-15 3 views
0

В моем файле конфигурации Java Spring я использую AbstractRoutingDatasource успешно для переключения нескольких подключений баз данных.AbstractRoutingDatasource и hibernate.dialect с многократными источниками данных

public MyRoutingDataSource myRoutingDataSource() { 
    MyRoutingDataSource dataSource = new MyRoutingDataSource(); 
    Map<Object, Object> targetDataSources = new HashMap<Object, Object>(); 
    dataSource.setDefaultTargetDataSource(defaultDataSource()); 
    dataSource.setTargetDataSources(targetDataSources); 
    return dataSource; 
} 

Но когда я хочу конкретных запросов SQL, который отличается от DataSources PostgreSQL/Oracle и т.д .. (как предел пагинация/rowNums), я должен, связанные с конкретной зимуют диалекте.

HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter(); 
    vendorAdapter.setGenerateDdl(false); 
    vendorAdapter.setShowSql(true); 
    vendorAdapter.setDatabasePlatform("org.hibernate.dialect.PostgreSQL81Dialect"); 

    LocalContainerEntityManagerFactoryBean factory = new LocalContainerEntityManagerFactoryBean(); 
    factory.setJpaVendorAdapter(vendorAdapter); 
    factory.setPackagesToScan("fr.appli.model"); 
    factory.setDataSource(myRoutingDataSource()); 

Мой вопрос, как я могу изменить зимуют диалект в моем EntityManager, когда я изменить источник данных из с AbstractRoutingDatasource? Можно ли это сделать программно?

Благодаря

+0

Можете ли вы уточнить это? Вы решили проблему? Я изо всех сил стараюсь работать с разными диалектами, но не могу найти решение. – Mejmo

ответ

0

Я думаю, что для того чтобы достигнуть этого вам потребуется несколько файлов конфигурации источника данных, и каждая база данных имеет свой собственный объект SessionFactory в DAO, который permof операции DB.

Например:

SessionFactory sessionFactory1 = new Configuration().configure("oracleconfig.cfg.xml").buildSessionFactory(); 

SessionFactory sessionFactory2 = new Configuration().configure("mysqlconfig.cfg.xml").buildSessionFactory(); 
+0

Да, используя DAO, можно настроить состояние нескольких источников данных на то, что у вас будет такое множество 'SessionFactory'. – Amogh

+0

Пожалуйста, уточните свой статус/отзыв? – Amogh

Смежные вопросы