【发布时间】:2010-12-23 23:39:12
【问题描述】:
我正在将我的一些 hql 语句迁移到 Criterias 现在我正在解决一个问题: 实体属性是 Integer 类型,但我需要通配符搜索,所以在 hql 中我这样做
session.createQuery("from P1 where id like :id").setString("id", "%"+s+"%")
完全没有问题,Hibernate 将 String 转换为 Integer。
如果我在 Criteria 中尝试这个,我只会得到一个 ClassCastException
String cannot be cast to Integer
Criteria crit = sessionFactory.getCurrentSession().createCriteria(P1.class);
crit.add(Restrictions.like("id",s)).addOrder(Order.asc("id")).setMaxResults(maxResults);
为什么 Hibernate 对这两种情况的处理方式不同?
【问题讨论】:
-
这没有意义。查询引擎本身能够管理这一点,但条件引擎不能。似乎 citeria impl 有一个错误。