我有一个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]%
?
答案 0 :(得分:1)
尝试使用CONCAT
代替'productId %'
或'? %'
:
SELECT ... WHERE PRODUCT_ID LIKE CONCAT(?, ' %')
//------------------------------------------^^
或者,在将productId
发送给查询之前,您最终可以将Query query = session.createQuery("SELECT ... WHERE PRODUCT_ID LIKE ?");
query.setParameter(1, productId + " %");
//---------------------------------^^
用空格连接起来:
#include <cstdlib>
#include <iostream>
#include <string>
#include <map>
using namespace std;
/*
*
*/
class apple{
private:
int a,b,c,d;
public:
int foo(){
return a+b+c+d;
}
};
class ball{
private:
map<apple,string> mp;
public:
void foo2(){
for(map<apple,string>::iterator it = mp.begin();it!=mp.end();++it){
cout<<it->first.foo()<<endl;
}
}
}
int main(int argc, char** argv) {
return 0;
}