Các điều kiện có thể được áp dụng bằng cách sử dụng hoặc/và ở mức độ khác nhau của truy vấn sử dụng phân ly
Criteria query = getCriteria("ENTITY_NAME");
query.add(Restrictions.ne("column Name", current _value));
Disjunction disjunction = Restrictions.disjunction();
if (param_1 != null)
disjunction.add(Restrictions.or(Restrictions.eq("column Name", param1)));
if (param_2 != null)
disjunction.add(Restrictions.or(Restrictions.eq("column Name", param_2)));
if (param_3 != null)
disjunction.add(Restrictions.or(Restrictions.eq("column Name", param_3)));
if (param_4 != null && param_5 != null)
disjunction.add(Restrictions.or(Restrictions.and(Restrictions.eq("column Name", param_4), Restrictions.eq("column Name", param_5))));
if (disjunction.conditions() != null && disjunction.conditions().iterator().hasNext())
query.add(Restrictions.and(disjunction));
return query.list();
Nguồn
2016-04-08 07:45:09
Đó là hoàn hảo cảm ơn! Cuối cùng tôi đã tìm thấy một ví dụ trực tuyến, nhưng tôi rất vui vì nó ở đây để tham khảo trong tương lai. – ScArcher2
nếu tôi muốn '(name = x AND address = y) HOẶC (phoneNumber = z)'? –