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表,则这不起作用