What's the right HQL Syntax for this query? -


मेरे पास एक क्लास GameDefinition है जो ItemDefinition को बढ़ाता है। मेरे पास अन्य वर्ग भी हैं जो ItemDefinition का विस्तार करते हैं मेरे पास एक और वर्ग StoreItem है जिसका नाम itemDefinition प्रकार ItemDefinition नाम दिया गया है।

मुझे सभी <कोड > गेम डेफिनेशन उनके स्टोर इटम्स में शामिल हो गए। लेकिन निश्चित रूप से, मैं अन्य परिभाषाओं को नहीं प्राप्त करना चाहता हूं जो कि ItemDefinition को बढ़ाता है।

कच्ची एसक्यूएल में मैं इस तरह काम करने के लिए कुछ उम्मीद करता हूं।

  चुनें * से गेम_ डिफ़िनीशन जी इनर जॉइन स्टोअर_इटम s पर g.id = s.item_definition_id   

इस के लिए उचित HQL तरीका क्या है?

यह एचटीसीएल के बारे में नहीं है, जो इकाई बीन में मानचित्रण को विन्यस्त करता है। मान लें कि गेम डिफिंशन एक @ एंटीटी है, ऐसा कुछ:

  गेम से चुनिए g डिफिनिशन g   

आप उपयुक्त एनोटेशन का उपयोग करके किसी प्रकार के मानचित्रण (एक-से-एक, एक-से-कई, आदि) के साथ वास्तविक स्टोरइटम को कॉन्फ़िगर कर सकते हैं। यदि, उदाहरण के लिए, मानचित्रण था:

GameDefinition.java
  @ एंटिटी @Table (name = "game_definition") सार्वजनिक वर्ग GameDefinition Serializable लागू करता है {// अन्य क्षेत्रों को छिपाना ... निजी स्टोर आईटम स्टोर आईटम; // अन्य गेटर्स / सेटर्स कटाई करें ... @ फेट (फ़ेचमोडा.जॉइन) @ऑन टूऑन (फ़ेच = फ़ेचटाइप। एगर, मैप किया गया = "गेम डिफिनिशन") सार्वजनिक स्टोर इटैम getStoreItem () {रिटर्न स्टोर आईटम; } सार्वजनिक शून्य सेटस्टोर आईटम (स्टोर आईटम स्टोर आईटम) {this.storeItem = storeItem; }}   

StoreItem.java
  @ एंटिटी @Table (name = "store_item") सार्वजनिक वर्ग की स्टोर इम्प्रेशमेंट्स सीरियलज़ेबल {/ / अन्य क्षेत्रों को हटाएं ... निजी गेमडिफ़िनिशन गेमडिफ़िनिशन; // कतरनी अन्य गेटर्स / सेटर्स ... @ फेट (फ़ेचमोडा.जॉइन) @ऑन टूऑन (फ़ेच = फ़ेच टाईप.ईएजीएआर) @ जॉइंट कॉलम (नाम = "आयट_डेफिनिशन_आईड") सार्वजनिक गेम डिफाइनिशन getGameDefinition () {game game deflection; } सार्वजनिक शून्य सेट गेम डिफाइनिशन (GameDefinition gameDefinition) {this.storeItem = gameDefinition; }}   

संपादित करें: आप वास्तव में ऐसा कर सकते हैं HQL, लेकिन फिर एक सूची & lt; ऑब्जेक्ट [] & gt; , जो कास्टिंग की आवश्यकता होती है, और बदसूरत हो, आदि। मुझे बताएं कि आप यह देखना चाहते हैं कि यह कैसे किया जाएगा।

Comments