hibernate
मानदंड और अनुमान
खोज…
प्रतिबंधों का उपयोग करते हुए सूची दें
मान लें कि हमारे पास कॉलम नाम "शीर्षक" के साथ शहर के नाम के साथ एक 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 स्टूडेंटस्टुड टेबल पर फ़ील्ड का नाम है