hql语句,封装后的hql语句在分开查询or语句要加上括号

在 且 与 或 优先级比较中 且 的优先级是大于 或 的。

addWhere("and o.age = ?", age);

addWhere("and o.name like ? ", "%" + str + "%");

addWhere("or o.stuNum like ?", "%" + str + "%");

addWhere("or o.calssName like ?", "%" + str + "%");

上面语句中会将age和name查完之后,才会查询or语句。所以要改成:

 

addWhere("and o.age = ?", age);

addWhere("and (o.name like ? ", "%" + str + "%");

addWhere("or o.stuNum like ?", "%" + str + "%");

addWhere("or o.calssName like ?)", "%" + str + "%");