把@Autowired 注解都去掉。
sessionFactory 是spring注入的 不用给他赋值。

解决方案 »

  1.   

    把@Autowired 注解都去掉。
    还是不行
    但是现在可以用
    ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
    sessionFactory = (SessionFactory)ctx.getBean("sessionFactory");
    获取sessionFactory了,但为什么就不能注入进去呢
      

  2.   

    <bean id="sessionFactory"
    class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
    用注解的话  是这个 
      

  3.   

    @Resource(name = "sessionFactory")
    protected SessionFactory sessionFactory;
    试试看这样行不行。
      

  4.   

    这样可以获取sessionFactory,但在
        public Session getSession() {  
    System.out.println(sessionFactory);
    return this.sessionFactory.getCurrentSession();  
        } 
    这里sessionFactory又为空了
      

  5.   

    这样可以获取sessionFactory,但在
        public Session getSession() {  
    System.out.println(sessionFactory);
    return this.sessionFactory.getCurrentSession();  
        } 
    这里sessionFactory又为空了<bean id="genericDAO" class="classespackage.dao.GenericDAO" scope="prototype"> 
             <property name="sessionFactory" ref="sessionFactory"/> 
        </bean>
    把 <property name="sessionFactory" ref="sessionFactory"/>  给去了
      

  6.   

    这样可以获取sessionFactory,但在
        public Session getSession() {  
    System.out.println(sessionFactory);
    return this.sessionFactory.getCurrentSession();  
        } 
    这里sessionFactory又为空了<bean id="genericDAO" class="classespackage.dao.GenericDAO" scope="prototype"> 
             <property name="sessionFactory" ref="sessionFactory"/> 
        </bean>
    把 <property name="sessionFactory" ref="sessionFactory"/>  给去了
    还是不行,sessionFactory还为空
      

  7.   

    不懂。给个setter方法看看会怎么样
      

  8.   

    问题解决了,分享下
    @SuppressWarnings("unchecked")
    @Repository("BaseDAO")
    public class GenericDAO <T extends Serializable, PK extends Serializable> implements BaseDAO<T, PK> {
    @Resource(name="sessionFactory")
    public SessionFactory sessionFactory; 
    private ApplicationContext ctx;  

        public void setSessionFactory(SessionFactory sessionFactory) {  
            this.sessionFactory = sessionFactory;
            System.out.println(this.sessionFactory);
            }       public Session getSession() {  
            ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
            sessionFactory = (SessionFactory)ctx.getBean("sessionFactory");
    System.out.println(sessionFactory);   
    return this.sessionFactory.getCurrentSession();  
        }  
        
    public List<T> findAll(Class<T> entityClass) {
    System.out.println(this.sessionFactory);
            return (List<T>) getSession().createCriteria(entityClass);
        }
    sessionFactory注入和手动获取要同时用,否则在其他方法中就获取不到sessionFactory,不知道为什么,但问题是解决了。
    结贴!