हाइबरनेट 5 के रूप में, यदि आप बोली पर निर्भर या अनुकूलित नहीं करना चाहते हैं, तो आप MetadataBuilderInitializer
को परिभाषित कर सकते हैं। उदाहरण के लिए, HQL से एक INTERVAL
साथ MySQL DATE_ADD
उपयोग करने के लिए, आप date_add_interval
नामक कस्टम समारोह को परिभाषित कर सकते हैं:
public class DateAddIntervalMetadataBuilderInitializer
implements MetadataBuilderInitializer {
@Override
public void contribute(MetadataBuilder metadataBuilder,
StandardServiceRegistry serviceRegistry) {
metadataBuilder.applySqlFunction("date_add_interval",
new SQLFunctionTemplate(DateType.INSTANCE,
"DATE_ADD(?1, INTERVAL ?2 ?3)"));
}
}
तुम भी एक जार संसाधन META-INF/services/org.hibernate.boot.spi.MetadataBuilderInitializer
बुलाया फ़ाइल में क्लास का नाम डाल करने के लिए की आवश्यकता होगी।
यह दृष्टिकोण जेपीए और/या वसंत जैसे ढांचे के माध्यम से हाइबरनेट का उपयोग करते समय विशेष रूप से उपयोगी होता है, जहां कॉन्फ़िगरेशन ढांचे द्वारा पूरी तरह से किया जाता है।
स्रोत
2016-12-28 21:20:01
मुझे पता है कि आप एक टेबल के समान दृश्य का उपयोग कर सकते हैं (केवल एक्सएमएल में म्यूटेबल का उपयोग करें), लेकिन एक फ़ंक्शन कॉल करने के लिए बहुत आसान होगा – Zoidberg