在休眠中使用 LIKE %

问题描述 投票:0回答:3

如何在 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)
java sql spring hibernate hsqldb
3个回答
3
投票

使用

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


2
投票

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

示例:

SELECT *
FROM abc.def_vw a
WHERE user_id = ?
AND str(user_id) LIKE '%' || ?

0
投票

需要注意的3件事:

  • user_id 是字符串吗?
  • 就像在 HQL 中一样工作得很好。例如“%something%”
  • 您的查询没有意义“where user_id =? and user_id like '%'”您想做什么?仅使用其中一个条件。
© www.soinside.com 2019 - 2024. All rights reserved.