2009-07-09 18 views
8

मुझे निम्न समस्या है। मेरे पास तीन वर्ग हैं, ए, बी और सी। ए में बी: एस की एक वनोनी संबंधित सूची है। बी में सी के बहुत से संबंध हैं। सी में "नाम" नामक एक फ़ील्ड है और बी में "नाम" नामक फ़ील्ड भी शामिल है। मैं जो हासिल करना चाहता हूं वह है कि ए की सूची में आइटम मुख्य रूप से सी के नाम से क्रमबद्ध हों और दूसरी बार बी के नाम से - समस्या यह है कि मुझे नहीं पता कि यह कैसे करना है। क्या यह भी संभव है?सूची के क्रम को परिभाषित करना

मैं अपने जेपीए प्रदाता के रूप में एक्लिप्ससेंक का उपयोग कर रहा हूं।


class A { 
    @OneToMany 
    @OrderBy("b.c.name, b.name") <---- this is the problem 
    List<B> b; 
} 

class B { 
    @ManyToOne 
    C c; 
    String name; 
} 

class C { 
    String name; 
} 

संपादित हाँ, मैं विभिन्न रूपों की कोशिश की है, उदाहरण के लिए @OrderBy ("c.name") काम नहीं करता है, मैं सिर्फ मुझे बता कि इकाई वर्ग ख शामिल नहीं है एक त्रुटि संदेश मिलता "c.name" नामक एक फ़ील्ड।

उत्तर

9

यह संभव नहीं है। @OrderBy केवल प्रत्यक्ष संपत्ति/फ़ील्ड नाम स्वीकार करता है, न किए गए गुणों को नहीं। जो समझ में आता है, वास्तव में, क्योंकि "सी" तालिका - आपकी fetching रणनीति के आधार पर आपके "बी" को पुनः प्राप्त करने के लिए जारी किए गए चयन का भी हिस्सा नहीं हो सकता है।

0

क्या आपने @OrderBy("c.name", "name") को आजमाया है?

आपको "बी" का उपयोग नहीं करना चाहिए। क्योंकि यह निहित है कि @ ऑर्डर बी बी सरणी पर बी के उदाहरणों के कॉलम पर किया जाएगा।

0

आप की कोशिश की है:

@OrderBy("c.name ASC", "name ASC") 

?

2

ChssPly76 सही है।

SELECT b 
FROM B b 
WHERE b.a = :mya 
ORDER BY b.c.name 
:

तुम कर सकते हो क्या इस तरह का नाम दिया क्वेरी बनाने के लिए है

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