Hibernate 中find方法HQL语句 and 和 or 的混合使用

我想写一个HQL语句查询使用,就是有一个ID条件是必须的,其他的一些条件是或的(就是几个条件中符合一个就可以)设想是fromGoodswherename=?orvalue... 我想写一个HQL语句查询使用,就是有一个ID条件是必须的,其他的一些条件是或的(就是几个条件中符合一个就可以)
设想是 from Goods where name = ? or value =? or mark =? and ID =?
但是我现在这样做,and没有效果,不属于这个Id的也可以查到这个Id下的消息
请问该如何更改?
展开
 我来答
沧健新
推荐于2018-02-28 · 超过36用户采纳过TA的回答
知道答主
回答量:99
采纳率:0%
帮助的人:92.7万
展开全部
from Goods where id = ? and (name = ? or name is null) and (value = ? or value is null) and (mark = ? or mark is null)
这样试试... or不能连接那么多的...
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
bd9006
2012-05-12 · TA获得超过2.5万个赞
知道大有可为答主
回答量:4.8万
采纳率:63%
帮助的人:1.6亿
展开全部
括号!

首先判断要查询的name和value和mark是否empty,如果不为empty再写到HQL语句作为空则不写
(name = ? or value =? or mark =?) and ID =?
String hql="........";
ArrayList para=new ArrayList();
if(! ( isEmpty(name) && isEmpty(value) && isEmpty(mark) ) ){
//再逐个判断是否empty,哪个不是empty,写到HQL中。
//hql增加一个、参数也增加一个。
//para
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
runzeroo0
2012-05-13 · TA获得超过385个赞
知道答主
回答量:106
采纳率:0%
帮助的人:68.7万
展开全部
把or全部改成and吧 怎么可能or和and一起用
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式