Я использую Spring и Hibernate на веб-сфере и пытаюсь выполнить запрос к базе данных.У меня есть 2 источника данных в 2 разных проектах, которые я импортирую, и моя проблема в том, что я выбрал только один источник данных.Вот спящий XML для каждого проекта:
проект 1:
<tx:annotation-driven transaction-manager="transactionManager" />
<bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<property name="dataSource" ref="DbSource1" />
<property name="mappingResources">
проект 2:
<bean id="SessionFactory2" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<property name="dataSource" ref="DbSource2" />
<property name="mappingResources">
- Также есть шаблон JDBC для хранимой процедуры
<bean id="retrievalService" class="xx.xx.xx.JDBCRetrievalService">
<property name="jdbcTemplate" ref="jdbcTemplate" /> </bean>
<bean id="transactionalService" class="xx.xx.xx.JDBCTransactionalService">
<property name="jdbcTemplate" ref="jdbcTemplate" /> </bean>
In my project application context, I simply import the 2 xmls above
<import resource="classpath:DBsource-hibernate1.xml" />
<import resource="classpath:DBSource-hibernate2.xml" />
Теперь в моем коде у меня есть следующее:
public abstract class HibernateBaseDao implements Serializable {
private static final long serialVersionUID = -8688473006487128511L;
/** Hibernate Session factory. */
@Qualifier("SessionFactory2")
private SessionFactory sessionFactory;
protected HibernateBaseDao() {
this.sessionFactory = null;
}
protected SessionFactory getSessionFactory() {
return sessionFactory;
}
@Autowired
public void setSessionFactory(SessionFactory sessionFactory) {
this.sessionFactory = sessionFactory;
}
protected Session getSession() {
return sessionFactory != null ? sessionFactory.getCurrentSession() : null;
}
}
@Component("MyDao")
public class MyDaoImpl
extends HibernateBaseDao
implements MyDaoI{
@Override
public int getValueFromDatabase(){
SQLQuery sqlQuery = (SQLQuery) createSQLQuery("select uservalue from MyTable");
List<Integer> values= sqlQuery.list();
values.get(0);
}
}
И, наконец, вот мой код, который вызывает его:
@ AutoDired MyDao myDao;
@Override
@Transactional()
public void runQuery() throws Exception
{
myDao.getValueFromDatabase
}
Проблема, которую он возвращает, говоря, что таблицы не существует.После расследования я обнаружил, что это первый источник данных.Из-за этого я уже два дня тяну за волосы.Какие-либо предложения???У меня уже есть квалификатор для SessionFactory2 в базовом классе, который я расширяю
Большое вам спасибо