2 База данных => 2 сеансовых фабрик и источников данных. В настоящее время это невозможно в вашем коде.
Я предполагаю, что у вас есть 1 ProductStatService
, но вы требуете, чтобы эта служба работала с sessionfactoryA для 'select' и sessionfactoryB для 'insert'.
Следовательно, вам нужно будет создать (и внедрить) 2 экземпляра этого сервиса в вашем модульном тесте, и они, конечно, не могут быть определены как одиночные (при условии, что вы используете Spring для DI).
Вам придется переписать часть вашего кода, фактическую сессионную фабрику нужно будет внедрить в сервис, а не получить GenericTransactionalUnitTest.getSessionFactory()
.
UPDATE
Если вы не хотите создавать 2 DAO, это также опция:
public class ProductStatDAO extends AbstractHibernateDao {
@Autowired(required = false)
@Qualifier("sessionFactoryA")
private SessionFactory sessionFactoryA;
@Autowired(required = false)
@Qualifier("sessionFactoryB")
private SessionFactory sessionFactoryB;
//called by Spring (init-method)
public void init() {
if (getSessionFactory() == null) {
if (sessionFactoryA != null) {
setSessionFactory(sessionFactoryA);
} else if (sessionFactoryB != null) {
setSessionFactory(sessionFactoryB);
}
// else throw exception
}
}
} * * тысяча двадцать-один
Однако вам все равно нужно будет внедрить 2 разных экземпляра этого DAO (поэтому scope = 'prototype') в вашу службу.