2010-05-25 13 views
5

बस एक त्वरित सवाल:JPQL जांच कई-से-अनेक संबंध

वहाँ इकाई (उदाहरण के उपयोगकर्ता के लिए), जो एक ही संस्था के लिए ManyToMany संबंध (उदाहरण के लिए इस संबंध का वर्णन करता है "दोस्ती" और इसके साथ जुड़ा हुआ है है सममित है)।

उपयोगकर्ता ए उपयोगकर्ता का "मित्र" है या नहीं, यह जांचने के लिए निष्पादन समय के मामले में सबसे तेज़ तरीका क्या है? "गूंगा" तरीका पूरी सूची लाने के लिए होगा और फिर जांचें कि क्या उपयोगकर्ता मौजूद है लेकिन यह स्पष्ट रूप से उपरि है।

मैं जेपीए 2

यहाँ नमूना कोड का उपयोग कर रहा:

@Entity 
@Table(name="users") 
public class UserEntity { 
    @ManyToMany(fetch = FetchType.LAZY) 
    private List<UserEntity> friends; 

    .... 
} 

उत्तर

6

आप पूरी सूची है, क्या एक MEMBER OF उपयोग के बारे में फिर से प्राप्त करने नहीं करना चाहते हैं? कुछ ऐसा:

SELECT user FROM UserEntity user WHERE :friend MEMBER OF user.friends 

इससे आपको उन सभी लोगों को मिल जाएगा जो बी दोस्त के रूप में हैं। यदि आप परिणामों को केवल एक तक सीमित करना चाहते हैं, तो WHERE खंड में एक शर्त जोड़ें।

यह सुनिश्चित नहीं है कि आप जो चाहते हैं उसे हासिल करने का यह सबसे अच्छा तरीका है। "गूंगा" दृष्टिकोण वास्तव में इतना मूर्ख नहीं दिखता है।

+0

धन्यवाद! यह ठीक वैसा ही है जैसा मुझे चाहिए। क्या आप यह भी सुझाव दे सकते हैं कि क्वेरी को कैसे संशोधित करें यदि: दोस्त आईडी है, न कि इकाई संदर्भ? मैं सरल प्रश्न के लिए क्षमा चाहता हूं लेकिन मैं जेपीक्यूएल में थोड़ा सा खो गया हूं :-) – Juriy

+0

कभी भी ध्यान न दें :-) पहले से ही मिला है। – Juriy

+0

@ जुरी क्या आप कृपया जो समाधान मिला है उसे साझा कर सकते हैं? – stivlo

संबंधित मुद्दे