3

如何LIKE %在 Hibernate 中使用。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)
4

3 回答 3

3

使用LIKE '%?%'和第二个参数字符串进行查询。该字段也应该是字符串类型,因为like用于比较字符串。

于 2013-03-12T18:25:23.470 回答
2

也许 user_id 不是 char/varchar?您必须先将带有 str() 的 user_id 转换为字符数据!

例子:

SELECT *
FROM abc.def_vw a
WHERE user_id = ?
AND str(user_id) LIKE '%' || ?
于 2013-03-12T18:24:37.357 回答
0

需要注意的 3 件事:

  • user_id 是字符串吗?
  • 就像在 HQL 中一样工作正常。例如像 '%something%'
  • 您的查询没有意义“在哪里 user_id =?和 user_id like '%'”你想做什么?仅使用其中一种条件。
于 2013-03-13T02:09:10.403 回答