在Hibernate中使用LIKE%

时间:2013-03-12 18:21:42

标签: java sql spring hibernate hsqldb

如何在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)

3 个答案:

答案 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)

要注意的三件事:

  • 是user_id字符串吗?
  • 喜欢在HQL中工作正常。例如'%something%'
  • 你的查询没有意义“user_id =?和user_id喜欢'%'”你想做什么?仅使用其中一个条件。