java - شرح - hibernate معنى




كيف يمكنك "أو" معا المعايير عند استخدام استعلام المعايير مع السبات؟ (4)

تريد استخدام Restrictions.disjuntion() . مثل ذلك

session.createCriteria(Whatever.class)
    .add(Restrictions.disjunction()
        .add(Restrictions.eq("name", queryString))
        .add(Restrictions.eq("address", queryString))
        .add(Restrictions.eq("phoneNumber", queryString))
    );

راجع مستند Hibernate here .

أحاول إجراء "OR" أساسي في ثلاثة حقول باستخدام استعلام معايير السبات.

مثال

class Whatever{
 string name;
 string address;
 string phoneNumber;
}

أرغب في إنشاء استعلام معايير حيث يمكن أن تتطابق سلسلة البحث الخاصة بي مع "الاسم" أو "العنوان" أو "رقم الهاتف".


على افتراض أن لديك جلسة إسبات لتسليم ثم يجب أن يعمل شيء مثل ما يلي:

Criteria c = session.createCriteria(Whatever.class);
Disjunction or = Restrictions.disjunction();
or.add(Restrictions.eq("name",searchString));
or.add(Restrictions.eq("address",searchString));
or.add(Restrictions.eq("phoneNumber",searchString));
c.add(or);

يمكن تطبيق الشروط باستخدام و / أو في مستويات مختلفة من الاستعلام باستخدام فصل

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();

    //Expression :  (c1 AND c2) OR (c3)      


     Criteria criteria = session.createCriteria(Employee.class);

      Criterion c1 = Restrictions.like("name", "%e%");
      Criterion c2 = Restrictions.ge("salary", 10000.00);
      Criterion c3 = Restrictions.like("name", "%YYY%");
      Criterion c4 = Restrictions.or(Restrictions.and(c1, c2), c3);
      criteria.add(c4);

// نفس الشيء يمكن القيام به لـ (c1 أو c2) و c3 ، أو أي تعبير معقد.





hibernate