खोज…


प्रतिबंधों का उपयोग करते हुए सूची दें

मान लें कि हमारे पास कॉलम नाम "शीर्षक" के साथ शहर के नाम के साथ एक TravelReview तालिका है

 Criteria criteria =
    session.createCriteria(TravelReview.class);
  List review =
    criteria.add(Restrictions.eq("title", "Mumbai")).list();
  System.out.println("Using equals: " + review);

हम उन्हें निम्नानुसार निर्धारित करके मापदंड में प्रतिबंध जोड़ सकते हैं:

List reviews = session.createCriteria(TravelReview.class)
   .add(Restrictions.eq("author", "John Jones"))
   .add(Restrictions.between("date",fromDate,toDate))
   .add(Restrictions.ne("title","New York")).list();

अनुमानों का उपयोग करना

क्या हमें केवल कुछ कॉलम पुनः प्राप्त करना चाहिए, हम ऐसा करने के लिए अनुमान वर्ग का उपयोग कर सकते हैं। उदाहरण के लिए, निम्न कोड शीर्षक कॉलम को पुनः प्राप्त करता है

 // Selecting all title columns
  List review = session.createCriteria(TravelReview.class)
        .setProjection(Projections.property("title"))
    .list();
  // Getting row count
  review = session.createCriteria(TravelReview.class)
    .setProjection(Projections.rowCount())
    .list();
  // Fetching number of titles
  review = session.createCriteria(TravelReview.class)
    .setProjection(Projections.count("title"))
    .list();

फिल्टर का उपयोग करें

@Filter का उपयोग WHERE कैंप के रूप में किया जाता है, यहाँ कुछ उदाहरण हैं

छात्र इकाई

@Entity
@Table(name = "Student")
public class Student
{
    /*...*/

    @OneToMany
    @Filter(name = "active", condition = "EXISTS(SELECT * FROM Study s WHERE state = true and s.id = study_id)")
    Set<StudentStudy> studies;

    /* getters and setters methods */
}

अध्ययन इकाई

@Entity
@Table(name = "Study")
@FilterDef(name = "active")
@Filter(name = "active", condition="state = true")
public class Study
{
    /*...*/

    @OneToMany
    Set<StudentStudy> students;

    @Field
    boolean state;

    /* getters and setters methods */
}

स्टूडेंटस्टडी एंटिटी

@Entity
@Table(name = "StudentStudy")
@Filter(name = "active", condition = "EXISTS(SELECT * FROM Study s WHERE state = true and s.id = study_id)")
public class StudentStudy
{
    /*...*/

    @ManytoOne
    Student student;

    @ManytoOne
    Study study;

    /* getters and setters methods */
}

इस तरह, हर बार "सक्रिय" फ़िल्टर सक्षम होता है,

-हम छात्र इकाई पर जो भी प्रश्न करते हैं, वे सभी छात्रों को केवल उनके state = true अध्ययन के साथ वापस करेंगे

-हम अध्ययन इकाई पर जो भी क्वेरी करते हैं वह सभी state = true अध्ययन लौटाएगा

-सभी स्टूडेंट स्टूडेंट पर हम जो भी प्रश्न करते हैं, वह केवल एक state = true अध्ययन संबंध के साथ वापस आ जाएगा

Pls ध्यान दें कि study_id sql स्टूडेंटस्टुड टेबल पर फ़ील्ड का नाम है



Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow