Java 如何在hibernate中为整数数据类型使用LIKE分离条件?

Java 如何在hibernate中为整数数据类型使用LIKE分离条件?,java,hibernate,model-view-controller,sql-like,Java,Hibernate,Model View Controller,Sql Like,我必须做限制。比如(“sequenceNo”,“%”+Integer.valueOf(sequenceNo.trim())+“%” 字段sequenceNo为整数类型,但sequenceNoparam值为字符串。我的问题是我得到一个异常java.lang.ClassCastException:java.lang.String不能转换为java.lang.Integer。出于某些原因,我真的必须将参数设置为字符串数据类型。当我在SQL中尝试喜欢整数时,它是有效的 请帮忙。谢谢。您不能为此目的添加条

我必须做
限制。比如(“sequenceNo”,“%”+Integer.valueOf(sequenceNo.trim())+“%”

字段
sequenceNo
为整数类型,但
sequenceNo
param值为字符串。我的问题是我得到一个异常
java.lang.ClassCastException:java.lang.String不能转换为java.lang.Integer
。出于某些原因,我真的必须将参数设置为字符串数据类型。当我在SQL中尝试喜欢整数时,它是有效的


请帮忙。谢谢。

您不能为此目的添加条件的属性限制,因为在获取期间,指定的属性值应根据实体类中指定的“字段类型”进行强制转换

然而,一个解决方案是使用SQLRestriction of criteria来旁路浇铸。我已经测试过了,效果很好

yourDetachedCriteriaObj.add(Restrictions.sqlRestriction(" sequenceNo LIKE '%"+yourSequenceNumToSearch+"%' "));
若要获取列表,请执行以下操作

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

我很惭愧,但我在博士后做了以下工作

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

我的博士后修改

cr34.add(Restrictions.sqlRestriction(cr34.getAlias()+"_.field::text like '%"+ fieldVal+"%'")); cr34.add(Restrictions.sqlRestriction(cr34.getAlias()+“\.field::文本,如“%”+fieldVal+“%”);
对于整数搜索参数

criteria=session.createCriteria(demo.class).add(Restrictions.sqlRestriction(“sequenceNo类似“%”+searchParameter+“%”))

试试这个

yourDetachedCriteriaObj.add(Restrictions.sqlRestriction(" sequenceNo LIKE '%"+yourSequenceNumToSearch+"%' "));
无法修复的类型转换返回错误:

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

因此,我们可以使用以下代码:

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

不能对整型列使用
LIKE
。如果您确实想这样做,则必须在应用
LIKE
之前将整数转换为字符串。如果您正在编写自己的SQL,那么这将很容易,但是现在我懒得查看如何告诉Hibernate这样做:-)非常感谢maimoona。就像一个符咒。没有限制这是可能的?另一个问题是,我有表的联接,两个表都有“sequenceNo”列,在这种情况下,它再次抛出错误。如果要使用别名/其他表,然后使用criteria表,则这不起作用