Hibernate help with a criteria join query -


मेरे पास चार टेबल हैं, USER, संपर्क, CONACT_TYPE, और USER_CONTACT

USER_CONTACT सभी संपर्कों को संग्रहीत करता है कि एक उपयोगकर्ता डमी डेटा के साथ आबादी वाले टेबल निम्नानुसार हैं:

उपयोगकर्ता तालिका

  USER_ID (int) | FIRST_NAME (varchar (2) | LAST_NAME (varchar (2) | ------------------------------------ ------------------------ | 1 | परीक्षा | उपयोगकर्ता | ------------------- -----------------------------------------   < P>  USER_CONTACT   
  USER_CONTACT_ID (int) | USER_ID (int) | CONTACT_ID (int) | --------------- ---------------------------------------- | 1 | 1 | 1 | | 2 | 1 | 2 | | 3 | 1 | 3 | --------------------------------------- ----------------   

संपर्क

  CONTACT_ID (इंट) | CONTACT_TYPE_ID (इंट) | संपर्क करें (varchar (2) | -------------------------------------- ----------------------- | 1 | 2 | (555) 555-5555 | 2 | 2 | (555) 593-3938 | 3 | 1 | test@oracle.com | ------------------------------------------ -------------------   

CONTACT_TYPE

  CONTACT_TYPE_ID ( Int) | CONTACT_TYPE | ------------------------------------- | 1 | EMAIL | | 2 | फोन | -------------------------------------   

मैं क्या करने की कोशिश कर रहा हूं एक ऐसी क्वेरी तैयार करता है जो एक सूची वापस करेगा जो केवल PHONE CONACT_TYPE में ही है मेरा हाइबरनेट फ़ंक्शन अभी तक है

  सार्वजनिक सूची & lt; UserContact & gt; GetUserContactByType (पूर्णांक प्रयोक्ता आईडी, स्ट्रिंग संपर्क प्रकार) {सत्र सत्र = मिलना सत्र। ()। OpenSession (); {मानदंड मानदंड = सत्र। प्रयास करेंगणना (प्रयोक्तासंसाधनचित्र, "USER_CONACT") का प्रयास करें; Criteria.add (प्रतिबंधों। Eq ("USER_CONACT.userId, userId"); मापदंड। प्रतिबंध (प्रतिबंधों। Eq ("USER_CONTAct.contact.contactType.contactType", संपर्क प्रकार); वापसी (सूची & amp; lt; UserContact & gt;) मापदंड.सूची ()  

contact.java

प्रत्येक तालिका को एक मॉडल वर्ग से मैप किया जाता है। P>

में संपर्क करें। Java वर्ग

  @ManyToOne (वैकल्पिक = झूठी, fetch = FetchType.EAGER) के साथ एक बहुत सारे संबंध हैं। निजी संपर्क प्रकार संपर्क प्रकार;   

UserContact.java

में contact.java वर्ग के लिए एक @ManyToOne संबंध और User.java वर्ग पर एक @ManyToOne शामिल है

  @ManyToOne (वैकल्पिक = गलत, लाने = FetchType.LAZY) निजी संपर्क संपर्क; @ManyToOne (वैकल्पिक = गलत, fetch = FetchType.LAZY) निजी उपयोगकर्ता उपयोगकर्ता;   

सभी वर्गों ऊपर तालिकाओं के सभी स्तंभ विशेषताओं के लिए मानक प्राप्तकर्ताओं और सेटर्स भी।

मैं एक त्रुटि प्राप्त कर रहा हूं यह बताते हुए कि यह मेरे यूजर कॉन्क्टक्ट क्लास के सम्पत्ति contact.contactType को हल नहीं कर सकता है। किसी को भी पता है कि इस तरह कुछ ठीक तरह से निष्पादित कैसे सीतनिद्रा में होना चाहिए?

मुझे यह पता चल गया, मुझे पता नहीं था एक बनाओ अलियास फंक्शन समाधान नीचे है अगर कोई सोच रहा है <पूर्व> सार्वजनिक सूची & lt; UserContact & gt; GetUserContactByType (पूर्णांक प्रयोक्ता आईडी, स्ट्रिंग संपर्क प्रकार) {सत्र सत्र = मिलना सत्र। ()। OpenSession (); {मानदंड मानदंड = सत्र। प्रयास करेंगणना (प्रयोक्तासंसाधनचित्र, "USER_CONACT") का प्रयास करें; मापदंड। Add (प्रतिबंधों। Eq ("USER_CONACT.userId, userId"); मानदंड। सिक्रेटअलिअस ("USER_CONACT.contact", "c"); मापदंड। प्रतिबंध (प्रतिबंध। Eq ("c.contactType.contactType", संपर्क प्रकार) ; वापसी (सूची & lt; UserContact & gt;) मापदंड.सूची ();}}

Comments