PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

जेपीए विरासत @EntityGraph में उपवर्गों के वैकल्पिक संघ शामिल हैं

आप केवल एक EntityGraph यदि संघ विशेषता सुपरक्लास का हिस्सा है और उसके द्वारा भी सभी उपवर्गों का हिस्सा है। अन्यथा, EntityGraph Exception के साथ हमेशा विफल रहेगा जो आपको वर्तमान में मिलता है।

अपनी N+1 चयन समस्या से बचने का सबसे अच्छा तरीका है कि आप अपनी क्वेरी को 2 प्रश्नों में विभाजित करें:

पहली क्वेरी MCValue प्राप्त करती है EntityGraph का उपयोग करने वाली इकाइयां selected . द्वारा मैप किए गए एसोसिएशन को लाने के लिए विशेषता। उस क्वेरी के बाद, इन संस्थाओं को हाइबरनेट के प्रथम स्तर कैश/दृढ़ता संदर्भ में संग्रहीत किया जाता है। दूसरी क्वेरी के परिणाम को संसाधित करते समय हाइबरनेट उनका उपयोग करेगा।

@Query("SELECT m FROM MCValue m") // add WHERE clause as needed ...
@EntityGraph(attributePaths = {"selected"})
public List<MCValue> findAll();

दूसरी क्वेरी तब Answer प्राप्त करती है इकाई और एक EntityGraph . का उपयोग करता है संबंधित Value को भी लाने के लिए संस्थाएं। प्रत्येक Value के लिए इकाई, हाइबरनेट विशिष्ट उपवर्ग को तुरंत चालू करेगा और जांच करेगा कि क्या पहले स्तर के कैश में पहले से ही उस वर्ग और प्राथमिक कुंजी संयोजन के लिए कोई वस्तु है। यदि ऐसा है, तो हाइबरनेट क्वेरी द्वारा लौटाए गए डेटा के बजाय पहले स्तर के कैश से ऑब्जेक्ट का उपयोग करता है।

@Query("SELECT a FROM Answer a")
@EntityGraph(attributePaths = {"value"})
public List<Answer> findAll();

क्योंकि हम पहले ही सभी MCValue प्राप्त कर चुके हैं संबंधित selected वाली इकाइयां संस्थाओं, अब हमें Answer मिलता है आरंभिक Value with के साथ इकाइयाँ संगठन। और अगर एसोसिएशन में एक MCValue शामिल है इकाई, इसका selected एसोसिएशन को भी इनिशियलाइज़ किया जाएगा।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. विशिष्ट संबद्ध मूल्य में परिवर्तन वाले खातों के लिए सभी ऐतिहासिक रिकॉर्ड लौटाएं

  2. रेल 3 माइग्रेशन:बूलियन (mysql बनाम postgreSQL)

  3. नोड-पोस्टग्रेज UTF पासवर्ड बग

  4. SQLAlchemy का उपयोग करके चयन कथन में कॉलम के रूप में सबक्वायरी के साथ एसक्यूएल जेनरेट करें

  5. ZIpped फ़ाइल को Postgres तालिका में कैसे आयात करें