oni*_*unn 7 java hibernate criteria
我正在将一些我的hql语句迁移到Criterias现在我正在解决一个问题:实体属性是Integer类型但是我需要一个像通配符搜索一样,所以在hql中我做
session.createQuery("from P1 where id like :id").setString("id", "%"+s+"%")
Run Code Online (Sandbox Code Playgroud)
没问题,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);
Run Code Online (Sandbox Code Playgroud)
为什么Hibernate以不同的方式处理这两种情况?
您可以使用str表达式转换.如果这有任何意义.
str()用于将数值或时间值转换为可读字符串
session.createQuery("from P1 where str(id) like :id").setString("id", "%"+s+"%")
Run Code Online (Sandbox Code Playgroud)
如果列上没有基于函数的索引,这将非常慢.
| 归档时间: |
|
| 查看次数: |
7359 次 |
| 最近记录: |