हो सकता है कि मैं ऐसी ही स्थिति में रहा हो जहां मैं स्प्रिंग डेटा जेपीए चाहता था @CreatedDate
काम करने के लिए एनोटेशन, लेकिन उपयोगकर्ता-स्तरीय ऑडिटिंग की कोई आवश्यकता नहीं थी जो अन्यथा उनके दस्तावेज़ीकरण में वर्णित है।
एनोटेशन-आधारित ऑडिटिंग को काम करने के लिए, मुझे फिर भी अपने प्रोजेक्ट में एक क्लास जोड़नी पड़ी जिसने org.springframework.data.domain.AuditorAware
को लागू किया। . यह अजीब है क्योंकि आप वास्तव में getCurrentAuditor()
से लौटाए गए मान का उपयोग नहीं करते हैं विधि जिसे आप लागू करेंगे; मेरा बस null
लौटाता है ।
public class NullAuditorBean implements AuditorAware {
@Override
public Object getCurrentAuditor() {
return null;
}
}
फिर मुझे अपनी "नल ऑब्जेक्ट" AuditorAware
. को संदर्भित करने की आवश्यकता थी मेरे applicationContext
. में एक प्रविष्टि में कार्यान्वयन जेपीए ऑडिटिंग को सक्रिय करने के लिए। मुझे यह सुनिश्चित करना था कि मैंने यह उस पंक्ति से पहले किया है जो jpa:repositories
निर्दिष्ट करती है . यह कुछ इस तरह दिखता है:
<bean id="auditorBean" class="your.package.subbed.here.NullAuditorBean"/>
<jpa:auditing auditor-aware-ref="auditorBean"/>
मुझे एक orm.xml
भी जोड़ना पड़ा फ़ाइल, और औपचारिक रूप से इसे मेरे entityManagerFactory
. की संपत्ति के रूप में संदर्भित करने की आवश्यकता है बीन, जैसे:
<property name="mappingResources">
<value>META-INF/orm.xml</value>
</property>
सुनिश्चित करें कि यह META-INF/orm.xml
. है प्रविष्टि आपके संकलन आउटपुट के साथ संग्रहीत है (मेरा WEB-INF/classes
के अंतर्गत मेरे WAR में है ।
वह orm.xml
फ़ाइल, रिकॉर्ड के लिए, कुछ बॉयलरप्लेट थी, जो इस संबंधित प्रश्न के उत्तर में पाई जा सकती है।
जब मुझे यह काम मिला तो यह एक उचित मात्रा में काम था। आप अपने पिछले कार्य समाधान को प्राथमिकता दे सकते हैं!