2014-05-07 4 views
8

जैसे एकल मान में समेकित करता है क्या जेपीए का उपयोग एक कस्टम एग्रीगेशन फ़ंक्शन है जो कॉन्सैट() को बढ़ाएगा ताकि यह कॉलम मानों को एक स्ट्रिंग में जोड़ सके?जेपीए एक समेकित फ़ंक्शन

उत्तर

2

मुझे हाल ही में जेपीए और एच 2 डेटाबेस के साथ एक ही समस्या का सामना करना पड़ा। मैंने बिना किसी सफलता के फ़ंक्शन आमंत्रण (नीचे देखें) के साथ जेपीक्यूएल से GROUP_CONCAT फ़ंक्शन को कॉल करने का प्रयास किया। अंत में, मैंने मूल क्वेरी कॉल का उपयोग किया था।

हालांकि, JPA 2.1 specifications का उल्लेख है कि आप एक पूर्वनिर्धारित या उपयोगकर्ता परिभाषित डेटाबेस फ़ंक्शन को कॉलर (कुल मिलाकर) फ़ंक्शन या तो स्केलर या कुल मिलाकर कॉल कर सकते हैं। मैंने द्वारा को प्रासंगिक भाग पर हाइलाइट करने के बाद अनुच्छेद से अनुच्छेद के बाद पुन: उत्पन्न किया है। पूर्वनिर्धारित की

4.6.17.3 प्रार्थना और उपयोगकर्ता-परिभाषित डाटाबेस कार्य

से जावा हठ क्वेरी भाषा का बिल्ट-इन कार्य अन्य कार्यों के आह्वान function_invocation वाक्य रचना के माध्यम से समर्थित है। इसमें पूर्वनिर्धारित डेटाबेस फ़ंक्शंस और उपयोगकर्ता द्वारा परिभाषित डेटाबेस फ़ंक्शंस का आविष्कार शामिल है।

function_invocation::= FUNCTION(function_name {, function_arg}*) 
function_arg ::= 
     literal | 
     state_valued_path_expression | 
     input_parameter | 
     scalar_expression 

function_name तर्क एक स्ट्रिंग है जो डेटाबेस फ़ंक्शन को इंगित करने के लिए इंगित करता है। तर्कों को डेटाबेस फ़ंक्शन के लिए उपयुक्त होना चाहिए जिसे लागू किया जाना है। फ़ंक्शन का परिणाम आमंत्रण संदर्भ के लिए उपयुक्त होना चाहिए।

फ़ंक्शन डेटाबेस-परिभाषित फ़ंक्शन या उपयोगकर्ता-परिभाषित फ़ंक्शन हो सकता है। फ़ंक्शन एक स्केलर फ़ंक्शन या कुल फ़ंक्शन हो सकता है।

function_invocation वाक्यविन्यास का उपयोग करने वाले अनुप्रयोग डेटाबेस में पोर्टेबल नहीं होंगे।

उदाहरण:

SELECT c 
FROM Customer c 
WHERE FUNCTION(‘hasGoodCredit’, c.balance, c.creditLimit) 

संदर्भ: Java Persistence 2.1, Final Release

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