如何在Hibernate中使用LIKE %
。我想在LIKE %
文件中使用带hbm.xml
的SQL。我有2个查询,我正在合并为1。
查询如下所示:
select * from PAY_GROUP_VW where CASE_SID=? AND CASE_TLE like %?%
我也试过%?%
。我使用了没有%
的like子句,它有效。但是%
不起作用。
包装的例外:
org.springframework.dao.InvalidDataAccessResourceUsageException: could not execute query; nested exception is org.hibernate.exception.SQLGrammarException: could not execute query
at org.springframework.orm.hibernate3.SessionFactoryUtils.convertHibernateAccessException(SessionFactoryUtils.java:630)
at org.springframework.orm.hibernate3.HibernateAccessor.convertHibernateAccessException(HibernateAccessor.java:412)
at org.springframework.orm.hibernate3.HibernateTemplate.doExecute(HibernateTemplate.java:424)
at org.springframework.orm.hibernate3.HibernateTemplate.executeFind(HibernateTemplate.java:343)
这是我传递参数的方式:
q.setParameter(0, csId);
q.setParameter(1, csTle);
return q.list();
尝试%
|| ?
并获得以下例外:
org.springframework.dao.InvalidDataAccessResourceUsageException: could not execute query; nested exception is org.hibernate.exception.SQLGrammarException: could not execute query
at org.springframework.orm.hibernate3.SessionFactoryUtils.convertHibernateAccessException(SessionFactoryUtils.java:630)
at org.springframework.orm.hibernate3.HibernateAccessor.convertHibernateAccessException(HibernateAccessor.java:412)
at org.springframework.orm.hibernate3.HibernateTemplate.doExecute(HibernateTemplate.java:424)
at org.springframework.orm.hibernate3.HibernateTemplate.executeFind(HibernateTemplate.java:343)
答案 0 :(得分:2)
使用LIKE '%?%'
和第二个参数字符串进行查询。该字段也应该是字符串类型,因为like
用于比较字符串。
答案 1 :(得分:1)
也许user_id不是char / varchar?您必须首先将带有str()的user_id转换为字符数据!
示例:
SELECT *
FROM abc.def_vw a
WHERE user_id = ?
AND str(user_id) LIKE '%' || ?
答案 2 :(得分:0)
要注意的三件事: