解决方案 »

  1.   

    启动报错2014-4-10 11:27:47 org.apache.catalina.core.StandardContext listenerStart
    严重: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener
    org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'memberDaoImpl': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire method: public void com.wlw.common.BaseDao.init(org.springframework.orm.hibernate3.HibernateTemplate); nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'hibernateTemplate' defined in class path resource [applicationContext.xml]: Cannot resolve reference to bean 'sessionFactory' while setting bean property 'sessionFactory'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in class path resource [applicationContext.xml]: Cannot resolve reference to bean 'mydataSource' while setting bean property 'dataSource'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'mydataSource' defined in class path resource [applicationContext.xml]: Error setting property values; nested exception is org.springframework.beans.NotWritablePropertyException: Invalid property 'initialSize' of bean class [org.apache.commons.dbcp.BasicDataSource]: Bean property 'initialSize' is not writable or has an invalid setter method. Does the parameter type of the setter match the return type of the getter?Caused by: org.springframework.beans.factory.BeanCreationException: Could not autowire method: public void com.wlw.common.BaseDao.init(org.springframework.orm.hibernate3.HibernateTemplate); nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'hibernateTemplate' defined in class path resource [applicationContext.xml]: Cannot resolve reference to bean 'sessionFactory' while setting bean property 'sessionFactory'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in class path resource [applicationContext.xml]: Cannot resolve reference to bean 'mydataSource' while setting bean property 'dataSource'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'mydataSource' defined in class path resource [applicationContext.xml]: Error setting property values; nested exception is org.springframework.beans.NotWritablePropertyException: Invalid property 'initialSize' of bean class [org.apache.commons.dbcp.BasicDataSource]: Bean property 'initialSize' is not writable or has an invalid setter method. Does the parameter type of the setter match the return type of the getter?Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'hibernateTemplate' defined in class path resource [applicationContext.xml]: Cannot resolve reference to bean 'sessionFactory' while setting bean property 'sessionFactory'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in class path resource [applicationContext.xml]: Cannot resolve reference to bean 'mydataSource' while setting bean property 'dataSource'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'mydataSource' defined in class path resource [applicationContext.xml]: Error setting property values; nested exception is org.springframework.beans.NotWritablePropertyException: Invalid property 'initialSize' of bean class [org.apache.commons.dbcp.BasicDataSource]: Bean property 'initialSize' is not writable or has an invalid setter method. Does the parameter type of the setter match the return type of the getter?Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in class path resource [applicationContext.xml]: Cannot resolve reference to bean 'mydataSource' while setting bean property 'dataSource'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'mydataSource' defined in class path resource [applicationContext.xml]: Error setting property values; nested exception is org.springframework.beans.NotWritablePropertyException: Invalid property 'initialSize' of bean class [org.apache.commons.dbcp.BasicDataSource]: Bean property 'initialSize' is not writable or has an invalid setter method. Does the parameter type of the setter match the return type of the getter?Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'mydataSource' defined in class path resource [applicationContext.xml]: Error setting property values; nested exception is org.springframework.beans.NotWritablePropertyException: Invalid property 'initialSize' of bean class [org.apache.commons.dbcp.BasicDataSource]: Bean property 'initialSize' is not writable or has an invalid setter method. Does the parameter type of the setter match the return type of the getter?
    Caused by: org.springframework.beans.NotWritablePropertyException: Invalid property 'initialSize' of bean class [org.apache.commons.dbcp.BasicDataSource]: Bean property 'initialSize' is not writable or has an invalid setter method. Does the parameter type of the setter match the return type of the getter?
      

  2.   

    这个是baseDaopublic class BaseDao extends HibernateDaoSupport { @Autowired
    public void init(HibernateTemplate hibernateTemplate) {
        setHibernateTemplate(hibernateTemplate);
    }

    public static final String CRITERIA_ASSERT_ERROR_MESSAGE = " 's type is not "
    + CriteriaImpl.class + ", please make sure you are using Hibernate3.6.10!!! "; @SuppressWarnings("unused")
    private boolean cacheQueries = false; @SuppressWarnings("unused")
    private String queryCacheRegion; public void setCacheQueries(boolean cacheQueries) {
    this.cacheQueries = cacheQueries;
    } public void setQueryCacheRegion(String queryCacheRegion) {
    this.queryCacheRegion = queryCacheRegion;
    } /**
     * 添加保存
     * @param obj
     */
    public void save(final Object obj) {
    getHibernateTemplate().save(obj);
    getHibernateTemplate().flush();
    } /**
     * 修改
     * @param obj
     */
    public void update(final Object obj) {
    // 以下行解决多对多关联中的,同一个session里面有了两个相同标识但是是不同实体
    getHibernateTemplate().getSessionFactory().getCurrentSession().clear();
    getHibernateTemplate().update(obj);
    getHibernateTemplate().flush();
    } /**
     * 删除
     * @param obj
     */
    public void delete(final Object obj) {
    getHibernateTemplate().delete(obj);
    getHibernateTemplate().flush();
    } /**
     * 根据id查询记录,适用懒加载
     * @param obj
     * @param id
     * @return
     */
    public Object load(final Class<?> obj, final Serializable id) {
    return getHibernateTemplate().load(obj, id);
    } /**
     * 根据id查询
     * @param obj
     * @param id
     * @return
     */
    public Object get(final Class<?> obj, final Serializable id) {
    return getHibernateTemplate().get(obj, id);
    } /**
     * 查询全部
     * @param obj
     * @return
     */
    public List<?> findAll(final Class<?> obj) {
    return getHibernateTemplate().find("from " + obj.getName());
    } public List<?> findByNamedQuery(final String namedQuery) {
    return getHibernateTemplate().findByNamedQuery(namedQuery);
    } public List<?> findByNamedQuery(final String query, final Object parameter) {
    return getHibernateTemplate().findByNamedQuery(query, parameter);
    } public List<?> findByNamedQuery(final String query, final Object[] parameters) {
    return getHibernateTemplate().findByNamedQuery(query, parameters);
    } /**
     * 根据sql,hql等语句查询
     * @param query
     * @return
     */
    public List<?> find(final String query) {
    return getHibernateTemplate().find(query);
    } public List<?> find(final String query, final Object parameter) {
    return getHibernateTemplate().find(query, parameter);
    }

    /**
     * 本函数增加了直接调用hql语句更新或删除功能呢
     * @param query
     */
    public void doHql(final String query){
    Session session=getHibernateTemplate().getSessionFactory().openSession();
        try{    
         session.createQuery(query);    
        }finally{    
            session.clear();    
        }    
    }

    /**
     * 本函数增加了hql 语句的分页功能,解决了hibernate 不支持 limit 分页功能
     * @param query
     * @param pageSize
     * @param pageIndex
     * @return
     */
    public List<?> findByHql(final String query,int pageSize,int pageIndex){
    List<?> results;
    Session session=getHibernateTemplate().getSessionFactory().openSession();
        try{    
         final Query q = session.createQuery(query);    
            q.setFirstResult(pageIndex);     
            q.setMaxResults(pageSize);   
            results = q.list();    
        }finally{    
            session.clear();    
        }    
        return results;
    }

    /**
     * 本函数增加了hql 语句的分页功能,解决了hibernate 不支持 limit 分页功能
     * @param query
     * @param pageSize
     * @param startIndex
     * @return
     */
        public PaginationSupport findPageByHql(final String query,int pageSize,int startIndex){
    List<?> results;
    Session session=getHibernateTemplate().getSessionFactory().openSession();
    int totalCount = 0;
    try{
    totalCount = session.createQuery(query).list().size();
         final Query q = session.createQuery(query);    
            q.setFirstResult(startIndex);     
            q.setMaxResults(pageSize);   
            results = q.list();    
        }finally{    
            session.clear();    
        }    
        PaginationSupport ps = new PaginationSupport(results,totalCount, pageSize, startIndex);
    return ps;
    }


    /*
     * public PaginationSupport findPageByCriteria( final DetachedCriteria
     * detachedCriteria) { return findPageByCriteria(detachedCriteria,
     * PaginationSupport.PAGESIZE, 0); }
     * 
     * public PaginationSupport findPageByCriteria( final DetachedCriteria
     * detachedCriteria, final int startIndex) { return
     * findPageByCriteria(detachedCriteria, PaginationSupport.PAGESIZE,
     * startIndex); }
     */ @SuppressWarnings({ "unchecked", "rawtypes" })
    public PaginationSupport findPageByCriteria(final DetachedCriteria detachedCriteria, final int pageSize, final int startIndex) {
    return (PaginationSupport) getHibernateTemplate().execute(
    new HibernateCallback() {
    @Override
    public Object doInHibernate(Session session) throws HibernateException {
    Criteria criteria = detachedCriteria.getExecutableCriteria(session);
    int totalCount = ((Integer) criteria.setProjection(Projections.rowCount()).uniqueResult()).intValue();
    criteria.setProjection(null);
    List<?> items = criteria.setFirstResult(startIndex).setMaxResults(pageSize).list();
    return new PaginationSupport(items, totalCount, pageSize, startIndex);
    }
    });
    } @SuppressWarnings({ "unchecked", "rawtypes" })
    public PaginationSupport findPageByCriteria(final DetachedCriteria detachedCriteria, final int pageSize, final int startIndex, final String[] sorter) {
    return (PaginationSupport) getHibernateTemplate().execute(
    new HibernateCallback() {
    @Override
    public Object doInHibernate(Session session) throws HibernateException {
    Criteria criteria = detachedCriteria.getExecutableCriteria(session);
    int totalCount = ((Integer) criteria.setProjection(Projections.rowCount()).uniqueResult()).intValue();
    criteria.setProjection(null);
    if (sorter !=null && sorter.length > 0) {
    String s = "";
    for(int i=0;i<sorter.length;i++){
    if(sorter[i]!=null && !sorter[i].isEmpty() && sorter[i].substring(sorter[i].length()-1).equals("d"))
    s+=sorter[i].substring(0,sorter[i].length()-2)+" desc";
    else if(sorter[i]!=null && !sorter[i].isEmpty() && sorter[i].substring(sorter[i].length()-1).equals("u"))
    s+=sorter[i].substring(0,sorter[i].length()-2)+" asc";
    else s+=sorter[i];
    if(i<sorter.length-1)
    s+=",";
    }
    criteria.add(Restrictions.sqlRestriction(" 1=1 order by " + s));
    }
    List<?> items = criteria.setFirstResult(startIndex).setMaxResults(pageSize).list();
    return new PaginationSupport(items, totalCount, pageSize, startIndex);
    }
    });
    } @SuppressWarnings({ "unused", "unchecked", "rawtypes" })
    private PaginationSupport findPageByCriteria(final List<?> items, final int pageSize, final int startIndex) {
    return (PaginationSupport) getHibernateTemplate().execute(
    new HibernateCallback() {
    @Override
    public Object doInHibernate(Session session) throws HibernateException {
    int totalCount = items.size();
    // List<?> items = lt;
    PaginationSupport ps = new PaginationSupport(items, totalCount, pageSize, startIndex);
    return ps;
    }
    });
    } @SuppressWarnings({ "unchecked", "rawtypes" })
    public List<?> findAllByCriteria(final DetachedCriteria detachedCriteria) {
    return (List<?>) getHibernateTemplate().execute(
    new HibernateCallback() {
    @Override
    public Object doInHibernate(Session session) throws HibernateException {
    Criteria criteria = detachedCriteria.getExecutableCriteria(session);
    return criteria.list();
    }
    });
    } @SuppressWarnings({ "unchecked", "rawtypes" })
    public int getCountByCriteria(final DetachedCriteria detachedCriteria) {
    Integer count = (Integer) getHibernateTemplate().execute(
    new HibernateCallback() {
    @Override
    public Object doInHibernate(Session session) throws HibernateException {
    Criteria criteria = detachedCriteria.getExecutableCriteria(session);
    return criteria.setProjection(Projections.rowCount()).uniqueResult();
    }
    });
    return count.intValue();
    }

    /**
     * 批量更新和批量删除使用的相同的方法(G20131026)
     * @param hql
     */
    public void batchUpdateHql(final String hql){
    // String updateHql = "update LadderPrice t set t.laprStatus = 0 where t.cooperatorInfo.id = 1"; 
    // String deleteHql = "delete from LadderPrice t where t.cooperatorInfo.id = 1"; 
    getHibernateTemplate().bulkUpdate(hql);
    getHibernateTemplate().flush();
    }

    /**
     * 批量更新和批量删除使用的相同的方法(G20131026)
     * @param sql
     */
    @SuppressWarnings({ "unchecked", "rawtypes" })
    public void batchUpdateSql(final String sql){
    // try {
    // SessionFactoryUtils.getDataSource(getSessionFactory()).getConnection().prepareStatement(sql).execute();
    // } catch (SQLException e) {
    // e.printStackTrace();
    // }
    getHibernateTemplate().execute(
    new HibernateCallback() {
    public Object doInHibernate(Session session)throws HibernateException, SQLException {
        session.doWork(new Work() {
     public void execute(Connection conn) throws SQLException {  
                            conn.prepareStatement(sql).execute();  
                     }
                 });  
            return null; 
    // return session.connection().createStatement().execute(sql);
    }
    }
    );
    }
    }
    /*
     * lazy load 
     * HQL Model
     * session.createQuery("from Question q left join fetch q.answers where q.id=1").list(); 
     * 
     * QBC方式(使用Criteria.DISTINCT_ROOT_ENTITY是为了去除重复记录):
     * session.createCriteria(Question.class).setFetchMode("answers", FetchMode.JOIN).setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY)
     * 
     */
      

  3.   

    BaseDao中的I
    @Autowired
        public void init(HibernateTemplate hibernateTemplate) {
            setHibernateTemplate(hibernateTemplate);
        }
    这个有什么用,去掉试试,HibernateDaoSupport这个类是spring提供的,已经为其代理了。
      

  4.   


    不行还是有错
    2014-4-10 14:43:43 org.apache.catalina.core.StandardContext listenerStart
    严重: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener
    org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'memberDaoImpl' defined in file [D:\quantong\work\wlwds\WebContent\WEB-INF\classes\com\wlw\dao\MemberDaoImpl.class]: Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: 'sessionFactory' or 'hibernateTemplate' is required
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1420)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:293)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:290)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:192)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:585)
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:895)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:425)
    at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:282)
    at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:204)
    at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:47)
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4206)
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:4705)
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1057)
    at org.apache.catalina.core.StandardHost.start(StandardHost.java:840)
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1057)
    at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:463)
    at org.apache.catalina.core.StandardService.start(StandardService.java:525)
    at org.apache.catalina.core.StandardServer.start(StandardServer.java:754)
    at org.apache.catalina.startup.Catalina.start(Catalina.java:595)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)
    Caused by: java.lang.IllegalArgumentException: 'sessionFactory' or 'hibernateTemplate' is required
    at org.springframework.orm.hibernate3.support.HibernateDaoSupport.checkDaoConfig(HibernateDaoSupport.java:118)
    at org.springframework.dao.support.DaoSupport.afterPropertiesSet(DaoSupport.java:44)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1477)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1417)
    ... 27 more
      

  5.   

    删除了以后怎么注入呢。不行的。hibernateTemplate 注入。sessionfactory也会注入的。
      

  6.   

    直接注入这个
     
        private SessionFactory sessionFactory;
        
        public void setSessionFactory(SessionFactory sessionFactory)
        {
            this.sessionFactory = sessionFactory;
        }