java - Hibernate 查询 LIKE 子句,但用空格分隔查找前缀和通配符

标签 java hibernate hql

我有一个 Hibernate 查询,它有一个要查找的前缀,如下所示:

SELECT ... WHERE PRODUCT_ID LIKE ?

PRODUCT_ID 的格式如下:

ABC123 Brown Desk
ABC1 Desk Set
DE84 Bar Stool
83UIK Spoon

目前,准备好的语句值如下所示(假设 productId 作为参数传入):

productId%

这意味着对于查询的 ID ABC1,它将返回上述列表中的两个结果:

ABC123 Brown Desk
ABC1 Desk Set

我的问题:如何在查找中包含空格,以便查询针对特定产品,而不仅仅是前缀?

我尝试过:

'productId %'

但它根本不返回任何结果。我如何告诉 Hibernate 我想要查找 productId[SINGLE SPACE]%

最佳答案

尝试使用CONCAT而不是'productId %''? %':

SELECT ... WHERE PRODUCT_ID LIKE CONCAT(?, ' %')
//------------------------------------------^^

或者您可以在将 productId 发送到查询之前将其与末尾的空格连接起来:

Query query = session.createQuery("SELECT ... WHERE PRODUCT_ID LIKE ?");
query.setParameter(1, productId + " %");
//---------------------------------^^

关于java - Hibernate 查询 LIKE 子句,但用空格分隔查找前缀和通配符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48714343/

相关文章:

java - 在哪里适合 Jasper Reports - 前端还是业务?

java - 从 URL 加载图像并限制文件大小

java - MergeQueue 在返回语句中缺少一些值

hibernate - Spring Data JDBC/Spring Data JPA 与 Hibernate

java - 删除 Spring 安全角色

java - Hibernate @OneToMany 和 @ManyToOne 双向关联中缺少列错误

java - 填充主键的 Hibernate saveOrUpdate

arrays - 如何使用数据类型为array <struct <int >>的列插入Hive表

java - 编写 Hibernate HQL 时出错

sql - 数很多