मैं पूछना चाहता हूं, यह संभव है कि मैं एक से अधिक स्तरों के लिए क्वेरी अनुमान और मानदंड तैयार करूं? मैं 2 मॉडल श्रेणियां होती हैं:कॉम्प्लेक्स हाइबरनेट अनुमान
@Entity
@Table(name = "person")
public class Person implements Serializable {
@Id
@GeneratedValue
private int personID;
private double valueDouble;
private int valueInt;
private String name;
@OneToOne(cascade = {CascadeType.ALL}, orphanRemoval = true)
@JoinColumn(name="wifeId")
private Wife wife;
/*
* Setter Getter
*/
}
@Entity
@Table(name = "wife")
public class Wife implements Serializable {
@Id
@GeneratedValue
@Column(name="wifeId")
private int id;
@Column(name="name")
private String name;
@Column(name="age")
private int age;
/*
* Setter Getter
*/
}
मेरे मानदंड एपीआई:
ProjectionList projections = Projections.projectionList();
projections.add(Projections.property("this.personID"), "personID");
projections.add(Projections.property("this.wife"), "wife");
projections.add(Projections.property("this.wife.name"), "wife.name");
Criteria criteria = null;
criteria = getHandlerSession().createCriteria(Person.class);
criteria.createCriteria("wife", "wife", JoinType.LEFT.ordinal());
criterion = Restrictions.eq("wife.age", 19);
criteria.add(criterion);
criteria.setProjection(projections);
criteria.setResultTransformer(Transformers.aliasToBean(Person.class));
return criteria.list();
और मुझे आशा है, मैं व्यक्ति क्वेरी कर सकता है, पत्नी संपत्ति के लिए निर्दिष्ट मापदंड है, और निर्दिष्ट वापसी ResultSet साथ। इसलिए मैंने निर्दिष्ट रिटर्न परिणाम प्राप्त करने के लिए अनुमान लगाए हैं
मुझे व्यक्तिगत आईडी, व्यक्ति (नाम), नाम (पत्नी) वापस आना चाहिए। मुझे एपीआई का उपयोग कैसे करना चाहिए, मैं हाइबरनेट मानदंड API का उपयोग करना पसंद करता हूं।
इस बार, मैं अपने अपेक्षित परिणाम प्राप्त करने के लिए ऊपर दिए गए कोड का इस्तेमाल किया है, लेकिन यह त्रुटि संदेश के साथ अपवाद फेंक देगा: Exception in thread "main" org.hibernate.QueryException: could not resolve property: wife.name of: maladzan.model.Person
, और कि मेरे Restrictions.eq("wife.age", 19);
व्यक्ति जो 19 उसकी उम्र मूल्य के रूप में साथ पत्नी है प्राप्त करने के लिए सही है?
धन्यवाद
हाय सामी एंडोनी।मैंने नेस्टेड ऑब्जेक्ट सृजन के लिए आपके एलियास टोबनएस्टेड रेसल्ट ट्रान्सफॉर्मर का उपयोग किया था, मुझे नेस्टेड ऑब्जेक्ट को नेस्टेड ऑब्जेक्ट के रूप में मिलता है, लेकिन मेरे पास एक छोटा सा मुद्दा है। मैं नेस्टेड ऑब्जेक्ट में केवल विशेष फ़ील्ड प्राप्त करना चाहता हूं, पैरेंट ऑब्जेक्ट में केवल कुछ फ़ील्ड, लेकिन परिणाम मूल ऑब्जेक्ट में सभी फ़ील्ड और नेस्टेड ऑब्जेक्ट के सभी फ़ील्ड नेस्टेड ऑब्जेक्ट के रूप में हैं। मुझे नहीं पता कि आपका कस्टम ट्रांसफार्मर केवल एक विशेष क्षेत्र लाने में सक्षम है, क्या नेस्टेड ऑब्जेक्ट में केवल एक विशेष फ़ील्ड को नेस्टेड ऑब्जेक्ट के रूप में लाने के लिए संभव है? –
क्या आपने इस मुद्दे को हल किया है? –
@ जतिनमालवाल किस मुद्दे पर? –