如何在整数数据类型的hibernate分离标准中使用LIKE?

时间:2013-03-20 03:24:19

标签: java hibernate model-view-controller sql-like

我必须Restrictions.like("sequenceNo", "%" + Integer.valueOf(sequenceNo.trim()) + "%")

字段sequenceNo是整数类型,但sequenceNo参数值是字符串。我的问题是我得到了例外java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer。出于某些原因,我真的必须使我的param成为字符串数据类型。当我在SQL中尝试使用LIKE一个整数时,它可以工作。

请帮忙。感谢。

5 个答案:

答案 0 :(得分:7)

您不能为此目的添加Criteria的属性限制,因为在获取期间,指定的属性值将根据Entity类中指定的“字段类型”进行转换。

但是,解决方案是使用SQLRestriction of criteria,通过传递。我已经测试过了,这很有效。

yourDetachedCriteriaObj.add(Restrictions.sqlRestriction(" sequenceNo LIKE '%"+yourSequenceNumToSearch+"%' "));

要获取列表,您可以在下面进行操作

List ls = yourDetachedCriteriaObj.getExecutableCriteria(yourSession).list();
// iterate over list or do whatever.

答案 1 :(得分:1)

我感到很惭愧,但我确实跟进了postgres的解决方法

crit.add(Restrictions.sqlRestriction(entry.getKey()+"::text like '%"+entry.getValue().replace("'", "''")+"%'"));

答案 2 :(得分:0)

我的postgres修改

cr34.add(Restrictions.sqlRestriction(cr34.getAlias()+"_.field::text like '%"+ fieldVal+"%'"));

答案 3 :(得分:0)

表示整数搜索参数

criteria = session.createCriteria(demo.class).add(Restrictions.sqlRestriction(" sequenceNo LIKE'%" + searchParameter +"%'" ;));

试试这个......

答案 4 :(得分:0)

yourDetachedCriteriaObj.add(Restrictions.sqlRestriction(" sequenceNo LIKE '%"+yourSequenceNumToSearch+"%' "));

返回错误以禁用类型转换:

运算符不退出:整数~~未知 提示:没有运算符匹配给定的名称和参数tyeps。您可能需要添加显式类型转换。

所以,我们可以使用这段代码:

yourDetachedCriteriaObj.add(Restrictions.sqlRestriction(" sequenceNo ::text LIKE '%"+yourSequenceNumToSearch+"%' "));