public final void setSessionFactory(SessionFactory sessionFactory) { if (this.hibernateTemplate == null || sessionFactory != this.hibernateTemplate.getSessionFactory()) { this.hibernateTemplate = createHibernateTemplate(sessionFactory); } } public final void setHibernateTemplate(HibernateTemplate hibernateTemplate) { this.hibernateTemplate = hibernateTemplate; }
- public final void setSessionFactory(SessionFactory sessionFactory) {
- if (this.hibernateTemplate == null || sessionFactory != this.hibernateTemplate.getSessionFactory()) {
- this.hibernateTemplate = createHibernateTemplate(sessionFactory);
- }
- }
- public final void setHibernateTemplate(HibernateTemplate hibernateTemplate) {
- this.hibernateTemplate = hibernateTemplate;
- }
解决方法:
@Transactional @Repository("baseLocationDao") public class BaseLocationDaoImpl extends HibernateDaoSupport implements LocationDao{ private Logger logger = LoggerFactory.getLogger(BaseLocationDaoImpl.class); @Resource public void setMySessionFactory(SessionFactory sessionFactory){ super.setSessionFactory(sessionFactory); } }
- @Transactional
- @Repository("baseLocationDao")
- public class BaseLocationDaoImpl extends HibernateDaoSupport implements LocationDao{
- private Logger logger = LoggerFactory.getLogger(BaseLocationDaoImpl.class);
- @Resource
- public void setMySessionFactory(SessionFactory sessionFactory){
- super.setSessionFactory(sessionFactory);
- }
- }
而SessionFactory的实现类也应该配置成注解形式的:
- <bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
- <property name="dataSource" ref="dataSource" />
- <property name="packagesToScan" value="com.pbn.oss.location"></property>
- <property name="schemaUpdate" value="true" />
- <property name="hibernateProperties">
- <props>
- <prop key="hibernate.format_sql">true</prop>
- <prop key="hibernate.show_sql">true</prop>
- <prop key="hibernate.dialect">org.hibernate.dialect.SQLServerDialect</prop>
- <prop key="hibernate.query.factory_class">org.hibernate.hql.ast.ASTQueryTranslatorFactory</prop>
- </props>
- </property>
- </bean>
、、、、、、、、、、、、、、、、、、、、、、
类:
@Repository(value = "fragRecommendDao")
public class RecommendDaoImpl extends GenericDaoImpl<Recommend> implements RecommendDao {xml配置:
<bean id="fragRecommendDao" class="com.sohu.group.frag.dao.impl.RecommendDaoImpl">
<property name="sessionFactory" ref="sessionFactoryOracle" />
</bean>
<!-- Hibernate SessionFactory -->
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="configLocation" value="classpath:hibernate.cfg.xml"/>
<property name="hibernateProperties">
<value>
hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect
hibernate.query.substitutions=true 'Y', false 'N'
hibernate.cache.use_second_level_cache=true
hibernate.cache.provider_class=org.hibernate.cache.EhCacheProvider
hibernate.hbm2ddl.auto=update
</value>
<!-- Turn batching off for better error messages under PostgreSQL -->
<!-- hibernate.jdbc.batch_size=0 -->
</property>
</bean>
<bean id="sessionFactoryOracle" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="dataSource" ref="dataSourceOracle"/>
<property name="configLocation" value="classpath:hibernate.cfg.oracle.xml"/>
<property name="hibernateProperties">
<value>
hibernate.dialect=${hibernate.oracle.dialect}
hibernate.query.substitutions=true 'Y', false 'N'
hibernate.cache.use_second_level_cache=true
hibernate.cache.provider_class=org.hibernate.cache.EhCacheProvider
</value>
<!-- Turn batching off for better error messages under PostgreSQL -->
<!-- hibernate.jdbc.batch_size=0 -->
</property>
</bean>