hibernate Criteria查询问题。

jy02411368 2012-01-04 05:00:40
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 我都试了。
...全文
107 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
ken_cq 2012-01-05
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 ken_cq 的回复:]

引用 5 楼 secret32 的回复:

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

应该是他说的问题,你先检查下类型是不是数值型的,如果是,可以试试:
return this.getHiber……
[/Quote]
E-mail:youchenqi@vip.qq.com 一起交流
ken_cq 2012-01-05
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 secret32 的回复:]

like(String column, Object obj)方法是不用加%的,你的"customerId"应该是定义的Integer类型,所以你后面的对应参数也要是Integer,而你传的是带“%”字符串(无法转为Integer)
[/Quote]
应该是他说的问题,你先检查下类型是不是数值型的,如果是,可以试试:
return this.getHibernateTemplate().findByCriteria(DetachedCriteria.forClass(c).add(Restrictions.sqlRestriction("customerId like (?)",arg[0].toString()+"%", Hibernate.STRING)));
secret32 2012-01-04
  • 打赏
  • 举报
回复
楼上说错了,不是like方法不用带%,只是你这里不需要
secret32 2012-01-04
  • 打赏
  • 举报
回复
like(String column, Object obj)方法是不用加%的,你的"customerId"应该是定义的Integer类型,所以你后面的对应参数也要是Integer,而你传的是带“%”字符串(无法转为Integer)
Derek-Chen 2012-01-04
  • 打赏
  • 举报
回复
like("customerId",arg[0].toString()+"%")
customerId 是 类 A里面的属性,属性是什么类型就传什么类型。
jy02411368 2012-01-04
  • 打赏
  • 举报
回复
/**高级查询*/
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()+"%")));
}
这是方法的完整代码
jy02411368 2012-01-04
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 ken_cq 的回复:]

肯定不是这句话出的错误,可以把上下文的贴出来看看么?
[/Quote]

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)

这是错误信息 我看网上都是这么写的 就拿过来自己写了一下 就不行,总说那个参数类型转换有问题。
ken_cq 2012-01-04
  • 打赏
  • 举报
回复
肯定不是这句话出的错误,可以把上下文的贴出来看看么?

67,514

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧