Hibernate 查询 LIKE 子句,但使用 space 分隔查找前缀和通配符

Hibernate query LIKE clause, but with space separating lookup prefix and wildcard

我有一个 Hibernate 查询,它有一个要查找的前缀,看起来像:

SELECT ... WHERE PRODUCT_ID LIKE ?

PRODUCT_ID 的格式类似于:

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

目前,准备好的语句值看起来像(假设 productId 作为参数传入):

productId%

这意味着对于查询的 ID ABC1,它将 return 两个 来自上面列表的结果:

ABC123 Brown Desk
ABC1 Desk Set

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

我试过了:

'productId %'

但它 return 根本没有任何结果。我如何告诉 Hibernate 我想查找 productId[SINGLE SPACE]%?

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

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

或者您可以在最后将 productId 与 space 连接起来,然后再将其发送到查询:

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