Exception in thread "main" org.springframework.beans.factory.BeanNotOfRequiredTypeException: Bean named 'hibernateDao' must be of type [com.support.HibernateTemplateDaO], but was actually of type [$Proxy0]
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:349)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194)
at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1079)
at com.test.TestHibernate.main(TestHibernate.java:20)
爆出了这样的错误  不管我怎么该 就是错 怎么回事啊我的spring文件:
<bean id="user" class="com.bean.User">
</bean>
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
      <property name="driverClassName"><value>${jdbc.driverClassName}</value></property>
  <property name="url"><value>${jdbc.url}</value></property>
  <property name="username"><value>${jdbc.username}</value></property>
  <property name="password"><value>${jdbc.password}</value></property>
</bean>
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location">
<value>com/jdbc.properties</value>
</property>
</bean>

<bean name="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref local="dataSource"/>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">
org.hibernate.dialect.MySQLDialect
</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.hbm2ddl.auto">update</prop>
</props>
</property>
<property name="mappingResources">
<list>
<value>com/bean/User.hbm.xml</value>
</list>
</property>
</bean>
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory">
<ref bean="sessionFactory"/>
</property>
</bean>

<tx:advice id="smAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="save*" propagation="REQUIRED"/>
<tx:method name="del*" propagation="REQUIRED"/>
<tx:method name="update*" propagation="REQUIRED"/>
</tx:attributes>
</tx:advice>

<aop:config>
<aop:pointcut expression="execution(* com..*.*(..))" id="myCut"/>
<aop:advisor advice-ref="smAdvice" pointcut-ref="myCut"/>
</aop:config>
我的hiberatedao :
package com.support;import java.util.List;import org.springframework.orm.hibernate3.support.HibernateDaoSupport;import com.bean.User;
import com.dao.UserDao;public class HibernateTemplateDaO extends HibernateDaoSupport implements UserDao{ public User getName(int id) {
List<User> list=this.getHibernateTemplate().find("from user");
User user=list .get(0);
return user;
} public User getUser(int id) {
// TODO Auto-generated method stub
return null;
} public int delete(int id) {
// TODO Auto-generated method stub
return 0;
} public int add(User user) {
// TODO Auto-generated method stub
return 0;
} public int update(User user) {
// TODO Auto-generated method stub
return 0;
}

我的测试文件:
  System.out.println(context.getBean("hibernateDao",HibernateTemplateDaO.class).getName(1));
}
他就是报错  说生成的是代理 不是hibernateDao类 有类型转换错误 求教啊 

解决方案 »

  1.   

    HibernateTemplateDaO配置在什么地方的,贴出来
      

  2.   

    <bean id="hibernateDao" class="com.support.HibernateTemplateDaO">
    <property name="sessionFactory" ref="sessionFactory"></property>
    </bean>
      

  3.   

    在你这个HibernateTemplateDaO 类中加上
    public void setSuperSessionFactory(SessionFactory sessionFactory) {
    super.setSessionFactory(sessionFactory);
    }
    因为HibernateDaoSupport 类中的setSessionFactory好像是final的
      

  4.   

    感觉应该是spring的配置文件里面配置错了。又或者在测试时有没有强制转换。