मानदंड API function expression
को परिभाषित करता है CriteriaBuilder
. में मूल SQL फ़ंक्शन निष्पादित करने के लिए इंटरफ़ेस इस प्रकार है:
<T> Expression<T> function(String name, Class<T> type, Expression<?>... args);
जहां name
SQL फ़ंक्शन का नाम है, type
अपेक्षित वापसी प्रकार है और args
तर्कों की एक परिवर्तनीय सूची है (यदि कोई हो)।
मानदंड क्वेरी में इसका उपयोग करने का एक उदाहरण यहां दिया गया है:
CriteriaBuilder cb = entityManager.getCriteriaBuilder();
CriteriaQuery cq = cb.createQuery(String.class);
Root<RadExamTimes> root = cq.from(RadExamTimes.class);
cq.select( cb.function("to_char", String.class, root.get("begin_exam"), cb.literal("MM/DD/YYYY")));
TypedQuery<String> query = entityManager.createQuery(cq);
List<String> result = query.getResultList();
जहां
RadExamTimes
:एक काल्पनिक मूल इकाईMM/DD/YYYY
:एक डेटाबेस-विशिष्ट प्रारूप (इस उदाहरण में Postgresql दिनांक प्रारूप; Oracle के लिए ओरा प्रारूप, आदि का उपयोग करें)to_char
:दिनांक मान को स्ट्रिंग में बदलने के लिए Postgresql फ़ंक्शनbegin_exam
:दिनांक फ़ील्ड को स्वरूपित किया जाना है
प्रारूप स्ट्रिंग को इस तरह पारित नहीं किया जा सकता है ताकि literal()
इसे लपेटने के लिए विधि का उपयोग किया जाता है।
नोट:उपरोक्त उदाहरण का परीक्षण MySQL डेटाबेस पर MySQL फ़ंक्शन और संबंधित दिनांक प्रारूप के साथ किया जाता है; लेकिन उदाहरण Postgresql सिंटैक्स से मेल खाने के लिए बदल गया।