hibernate的hql多个查询条件如何快捷的拼接

比如说有个检索,可能要检索A,B,C,D,E五个属性,那么在hql中拼接的语句就应该是
from table where A=? and b=? and C=? and D=? and E=?这样子,但是现实情况是比较复杂的,如果手动去拼接这个字符串比较复杂,什么时候加where就是个问题了,更何况有的属性查询有的不查询,求各位大神有什么现成的解决方案吗?或者我自己写代码的话是什么思路呢?

4个回答

你们回答的都不对,我找到解决办法了,用criteria完美解决了,不用拼where也不用and,有什么条件就无限的往上加就行了,对于我这种比较复杂检索功能的页面正好用。

smileyyshuai
bug7369 呃呃呃 详细说说啊
大约 4 年之前 回复

什么时候加where就是个问题了……
from table where 1=1 后面的全and xxx
自己判断属性需不需要查询,查就手动拼接加上,不查就不加

ksdb0468473
杂烩饭阁下哦哦 我觉得这个方式不好,不够快捷
接近 5 年之前 回复

查属性?类似关键字那种吗 可以使用模糊查询啊
拿个简单的来说,比如mysql, where A like %example1% and B like %example2% 这样 example是你传入的字符串 如果你example传入"票价" B是""空字符串,
那么查询只会查 A属性 存在任何 跟"票价" 相关的

public String getHql(String[] property,Object[] obj){
String hql="from table ";

String str="";
if(obj.length>0){
str="where ";
for(int i=0;i<obj.length;i++){
if(obj[i]!=null){
str+=pro[i]+"="+obj[i]+" and "
}
}
str=str.subString(0,str.length-4);
}
return hql+str;
}

qq_25226029
空-城旧-梦 差不多这个思路
接近 5 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问