createCriteria.forClass(A.class).add(Restrictions.like("customerId",arg[0].toString()+"%")) 这个怎么老是提示说java.lang.String cannot be cast to java.lang.Integerjava.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer 转换String我试过了 转换成Int我也试过了 不明白它到底要穿什么类型的参数。请问过的指点一下 谢谢。数组肯定是对的没有问题。现在就是不清楚到底要穿什么类型的值。转换String int 我都试了。

解决方案 »

  1.   


    java.lang.String cannot be cast to java.lang.Integerjava.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer
    at org.hibernate.type.IntegerType.set(IntegerType.java:41)
    at org.hibernate.type.NullableType.nullSafeSet(NullableType.java:136)
    at org.hibernate.type.NullableType.nullSafeSet(NullableType.java:116)
    at org.hibernate.loader.Loader.bindPositionalParameters(Loader.java:1707)
    at org.hibernate.loader.Loader.bindParameterValues(Loader.java:1678)
    at org.hibernate.loader.Loader.prepareQueryStatement(Loader.java:1563)
    at org.hibernate.loader.Loader.doQuery(Loader.java:673)
    at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:236)
    at org.hibernate.loader.Loader.doList(Loader.java:2220)
    at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2104)
    at org.hibernate.loader.Loader.list(Loader.java:2099)
    at org.hibernate.loader.criteria.CriteriaLoader.list(CriteriaLoader.java:94)
    at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1569)
    at org.hibernate.impl.CriteriaImpl.list(CriteriaImpl.java:283)
    at org.springframework.orm.hibernate3.HibernateTemplate$36.doInHibernate(HibernateTemplate.java:1065)
    at org.springframework.orm.hibernate3.HibernateTemplate.doExecute(HibernateTemplate.java:419)
    at org.springframework.orm.hibernate3.HibernateTemplate.executeWithNativeSession(HibernateTemplate.java:374)
    at org.springframework.orm.hibernate3.HibernateTemplate.findByCriteria(HibernateTemplate.java:1055)
    at org.springframework.orm.hibernate3.HibernateTemplate.findByCriteria(HibernateTemplate.java:1048)这是错误信息 我看网上都是这么写的 就拿过来自己写了一下 就不行,总说那个参数类型转换有问题。
      

  2.   

    /**高级查询*/
    public List<Object> findSearch(Class c,String...args)
    throws RuntimeException {
    /**取出方法中的查询条件*/
    String arg[]=new String[7];
    int i=0;
    for(String s:args){
    arg[i++]=s;
    }

    return this.getHibernateTemplate().findByCriteria(DetachedCriteria.forClass(c).add(Restrictions.like("customerId",arg[0].toString()+"%")));
    }
    这是方法的完整代码
      

  3.   

    like("customerId",arg[0].toString()+"%")
    customerId 是 类 A里面的属性,属性是什么类型就传什么类型。
      

  4.   

    like(String column, Object obj)方法是不用加%的,你的"customerId"应该是定义的Integer类型,所以你后面的对应参数也要是Integer,而你传的是带“%”字符串(无法转为Integer)
      

  5.   

    楼上说错了,不是like方法不用带%,只是你这里不需要
      

  6.   

    应该是他说的问题,你先检查下类型是不是数值型的,如果是,可以试试:
    return this.getHibernateTemplate().findByCriteria(DetachedCriteria.forClass(c).add(Restrictions.sqlRestriction("customerId like (?)",arg[0].toString()+"%", Hibernate.STRING)));
      

  7.   

    E-mail:[email protected]  一起交流