Invalid property 'target' of bean class [com.comm.BaseDAOImpl]:Bean property 'target' is not writable or has an invalid setter method. Does the parameter type of the setter match the return type of the getter?
提示我这个错误,我这个BaseDAOImpl.java代码如下:
package com.comm;
//包省略
@SuppressWarnings("unchecked")
public class BaseDAOImpl<T, PK extends Serializable> extends
        HibernateDaoSupport implements BaseDAO<T, PK> {
    private final static Logger logger = Logger.getLogger(BaseDAOImpl.class);
    protected Class<T> clazz;
    public BaseDAOImpl() {
    }
public BaseDAOImpl(Class<T> clazz) {
        this.clazz = clazz;
    }
    public PK create(T o) {
        return (PK) this.getHibernateTemplate().save(o);
    }
    public void create(T o, Serializable pk) {
        this.getHibernateTemplate().save((String)o, pk);
    }
    public void save(T o) {
        this.getHibernateTemplate().saveOrUpdate(o);
    }
    public T find(PK id) {
        Object o = this.getHibernateTemplate().load(clazz, id);            
        return (T) o;
    }
    public T get(PK id) {
        Object o = this.getHibernateTemplate().get(clazz, id);
        return (T) o;
    }
    public void update(T o) {
        this.getHibernateTemplate().update(o);
    }
    public void delete(PK id) {         
        getHibernateTemplate().delete(find(id));
    }
public void delete(T o) {
        this.getHibernateTemplate().delete(o);
    }
    public void deleteAll(Collection<T> entities) {
        getHibernateTemplate().deleteAll(entities);
    }
    public List<T> list() {
        return this.getHibernateTemplate().loadAll(clazz);
    }
/**
     * 去除select 子句,未考虑union的情况
     */
    private static String removeSelect(String hql) {
        Assert.hasText(hql);
        int beginPos = hql.toLowerCase().lastIndexOf("from");
        Assert.isTrue(beginPos != -1, " hql : " + hql
                + " must has a keyword 'from'");
        return hql.substring(beginPos);
    }    /**
     * 去除select 子句,未考虑union的情况
     */
    private static String removeFirstSelect(String hql) {
        Assert.hasText(hql);
        int beginPos = hql.toLowerCase().indexOf("from");
        Assert.isTrue(beginPos != -1, " hql : " + hql
                + " must has a keyword 'from'");
        return hql.substring(beginPos);
    }
    /**
     * 去除orderby 子句
     */
    private static String removeOrders(String hql) {
        Assert.hasText(hql);
        Pattern p = Pattern.compile("order\\s*by[\\w|\\W|\\s|\\S]*",
                Pattern.CASE_INSENSITIVE);
        Matcher m = p.matcher(hql);
        StringBuffer sb = new StringBuffer();
        while (m.find()) {
            m.appendReplacement(sb, "");
        }
        m.appendTail(sb);
        return sb.toString();
    }
    public Object getObject(String hql){
     Query query = getSession().createQuery(hql);
    
     List list = query.list();
     if(list == null || list.size() <= 0){
     return null;
     }
     return list.get(0);
    }
    public List list(String hql, int topNumber, Object... args) {
        Assert.hasText(hql);        Query query = getSession().createQuery(hql);
        for (int i = 0; i < args.length; i++) {
            query.setParameter(i, args[i]);
        }
               query.setMaxResults(topNumber);        return (List) query.list();
    }    public List list(String hql, Object... args) {
        return this.list(hql, new Pager(), args);
    }    public List listBySQL(String sql, String alias, Class clazz, Object... args) {
        return this.listBySQL(sql, new Pager(), alias, clazz, args);
    }    public List listBySQL(String sql, Object[] args) {
        Query sqlQuery = getSession().createSQLQuery(sql);        if (args != null) {
            for (int i = 0; i < args.length; i++) {
                sqlQuery.setParameter(i, args[i]);
            }
        }        return sqlQuery.list();
    }    public List listBySQL2(String sql, Pager pager, String alias, Class clazz,
            Object... args) {
        Assert.hasText(sql);        SQLQuery query = getSession().createSQLQuery(sql);
        for (int i = 0; i < args.length; i++) {
            query.setParameter(i, args[i]);
        }        if (pager == null || pager.getPageNumber() == 0) {
            return query.addEntity(alias, clazz).list();
        }        // 取总数
        String countQueryString = "select count(*) from " + "(select * "
                + removeFirstSelect(removeOrders(sql)) + ") temp_count";
        Query queryCount = getSession().createSQLQuery(countQueryString);
        for (int i = 0; i < args.length; i++) {
            queryCount.setParameter(i, args[i]);
        }
        List countlist = queryCount.list();
        int totalCount = ((BigDecimal) countlist.get(0)).intValue();        pager.setTotalObjects(totalCount);
        pager.calc();        query.setFirstResult(pager.getFirstResult());
        query.setMaxResults(pager.getPageSize());        return query.addEntity(alias, clazz).list();
    }    public List listBySQL(String sql, Pager pager, String alias, Class clazz,
            Object... args) {
        Assert.hasText(sql);        SQLQuery query = getSession().createSQLQuery(sql);
        for (int i = 0; i < args.length; i++) {
            query.setParameter(i, args[i]);
        }        if (pager == null || pager.getPageNumber() == 0) {
            return query.addEntity(alias, clazz).list();
        }        // 取总数
        String countQueryString = "select count(*) from " + "(select * "
                + removeSelect(removeOrders(sql)) + ") temp_count";
        Query queryCount = getSession().createSQLQuery(countQueryString);
        for (int i = 0; i < args.length; i++) {
            queryCount.setParameter(i, args[i]);
        }
        List countlist = queryCount.list();
        int totalCount = ((BigDecimal) countlist.get(0)).intValue();        pager.setTotalObjects(totalCount);
        pager.calc();        query.setFirstResult(pager.getFirstResult());
        query.setMaxResults(pager.getPageSize());        return query.addEntity(alias, clazz).list();
    }    public List list(String hql, Pager pager, Object... args) {
        Query query = getSession().createQuery(hql);
        for (int i = 0; i < args.length; i++) {
            query.setParameter(i, args[i]);
        }        if (pager == null || pager.getPageNumber() == 0) {
            return (List) query.list();
        }        // 取总数
        String countQueryString = " select count (*) "
        // + removeSelect(removeOrders(hql));
                + removeFirstSelect(hql);
        List countlist = getHibernateTemplate().find(countQueryString, args);
        int totalCount = (countlist != null && countlist.size() > 0) ? (Integer) countlist.get(0) : 0;        pager.setTotalObjects(totalCount);
        pager.calc();        query.setFirstResult(pager.getFirstResult());
        query.setMaxResults(pager.getPageSize());        return (List) query.list();
    }    public List listByNamedQuery(String queryName, String[] argNames,
            Object[] argValues) {
        return this.getHibernateTemplate().findByNamedQueryAndNamedParam(
                queryName, argNames, argValues);
    }    public void saveAll(Collection<T> entities) {
        this.getHibernateTemplate().saveOrUpdateAll(entities);
    }}

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【xiaoqingao】截止到2008-07-16 09:05:44的历史汇总数据(不包括此帖):
    发帖的总数量:12                       发帖的总分数:220                      每贴平均分数:18                       
    回帖的总数量:38                       得分贴总数量:4                        回帖的得分率:10%                      
    结贴的总数量:10                       结贴的总分数:180                      
    无满意结贴数:2                        无满意结贴分:25                       
    未结的帖子数:2                        未结的总分数:40                       
    结贴的百分比:83.33 %               结分的百分比:81.82 %                  
    无满意结贴率:20.00 %               无满意结分率:13.89 %                  
    楼主加油
      

  2.   

    Bean property 'target' is not writable or has an invalid setter method
    你的 target属性没有对应的set方法,或者写错了。
      

  3.   

    我也看出了是没有set和get方法
      

  4.   

    这是一个ssh的例子,照着做了一遍,还不行,不知道给哪个添加set get  望指教
      

  5.   

    给你举个例子比如说的你的service使用BaseDAOImpl
    那么你就要在里面有个属性
    private BaseDAOImpl dao =null;
    在添加set get方法!!