Sunday 15 January 2012

java ee - Hibernate NewBie: Criteria Query of Multiple Associated Classes -


मेरे पास दो वर्ग हैं:

  @Entity @Table (name = "Appeal_Header") सार्वजनिक वर्ग अपीलहेडर सीरियलज़ेबल {निजी स्थिर अंतिम लंबे सीरियल वीर्सयूआईडी = 8402922611571578104 एल लागू करता है; @ आईडी @ कॉलम (नाम = "अपील_हेडर_के", अनन्य = सच, शून्य = गलत) निजी लंबे आईडी; @ स्तंभ (नाम = "ग्राहक_cd", अद्वितीय = सच, शून्य = गलत) निजी स्ट्रिंग ग्राहक; @ManyToOne (fetch = FetchType.EAGER) @JoinColumn (नाम = "hes_invoice_header_id", insertable = false) निजी बिलिंगहाइडर बिलिंग हेडर; सार्वजनिक लंबे आईआईडी () {वापसी आईडी; } सार्वजनिक शून्य सेटआईडी (लंबी आईडी) {this.id = id; } सार्वजनिक बिलिंग हेडर getBillingHeader () {वापसी बिलिंगहैडर; } सार्वजनिक शून्य सेटबिलिंग हेडर (बिलिंग हेडर बिलिंग हेडर) {this.billingHeader = billingHeader; } सार्वजनिक स्ट्रिंग getCustomer () {वापसी ग्राहक; } सार्वजनिक शून्य सेट ग्राहक (स्ट्रिंग ग्राहक) {this.customer = ग्राहक; }} @ एंटीटी @Table (नाम = "बिलिंग_हेडर") सार्वजनिक वर्ग बिलिंगहेयर सीरियलज़ेबल {निजी स्टेटिक फाइनल लंबे सीरियल वीर्सयूआईआईडी = 503665425710114912L; @Id @Column (नाम = "hes_invoice_header_id", insertable = false, updatable = false) निजी लंबे आईडी; @ कॉलम (नाम = "दावे_संख्या", डालने योग्य = गलत, अद्यतन करने योग्य = गलत, अद्वितीय = गलत) निजी स्ट्रिंग दावा नंबर; @OneToMany (cascade = {CascadeType.ALL}) @JoinColumn (नाम = "hes_invoice_header_id", insertable = false, updatable = false) निजी सूची & lt; अपीलहैडर & gt; appealHeader; सार्वजनिक लंबे आईआईडी () {वापसी आईडी; } सार्वजनिक शून्य सेटआईडी (लंबी आईडी) {this.id = id; } सार्वजनिक स्ट्रिंग getClaimNumber () {वापसी का दावा नंबर; } सार्वजनिक शून्य सेटक्लाइमैनम्बर (स्ट्रिंग दावे नंबर) {this.claimNumber = claimNumber; } सार्वजनिक सूची & lt; अपीलहैडर & gt; GetAppealHeader () {वापसी अपीडर; } सार्वजनिक शून्य सेटअपेपलहाडर (सूची & lt; अपीलहैडर & gt; अपीलहैडर) {this.appealHeader = अपीलहैडर; }} सार्वजनिक शून्य exececute () {मानदंड मानदंड = सत्र। सृजन वर्गीकरण (AppealHeader.class); यदि (! ""। बराबर (form.getCustomer ()) मानदंड। Add (प्रतिबंधों। Eq ("ग्राहक", form.getCustomer ())); यदि (! ""। बराबर (form.getClaimNumber ())) मापदंड। प्रतिबंध (प्रतिबंध। Eq ("बिलिंगहैडर। दावा नंबर", form.getClaimNumber ())); }   

अब, मैं इस मानदंड की क्वेरी निष्पादित कर रहा हूं:

अगर मैं ग्राहक से पूछता हूं तो मैं सभी अपील के शीर्षलेखों के साथ-साथ संबंधित बिलिंग शीर्षलेखों को वापस प्राप्त कर सकता हूं। लेकिन अगर मैं ग्राहक से बिलिंग करता हूं और बिलिंगिंगडर। बस बिलिंगिंग के शीर्षक। मुझे यह अपवाद मिलता है:

  अपवाद: org.hibernate.QueryException: संपत्ति का समाधान नहीं कर सका: billingHeader.claimNumber: healthe.appeals.model.AppealHeader   

क्या कोई मेरी सहायता कर सकता है ??

चूंकि आप अपने हाइबरनेट प्रतिबंध के लिए कोड प्रदान नहीं करते हैं I आपको हाइबरनेट प्रलेखन के उदाहरण दिए हैं, जो मुझे लगता है कि यह आपको सही दिशा में बताएगा:

  सूची बिल्ली = sess.createCriteria (Cat.class ) .add (प्रतिबंध "।" ("नाम", "एफ%")) .createcriteria ("बिल्ली के बच्चे") .add (प्रतिबंधों। जैसे ("नाम", "एफ%")) .list ();    

No comments:

Post a Comment