2011-09-13 6 views
5

के साथ यूयूआईडी मैं अपने मॉडल पर नियमित आईडी के बजाय यूयूआईडी का उपयोग करना चाहता हूं।प्ले फ्रेमवर्क

क्या यह नाटक ढांचे के साथ किया जा सकता है?

उत्तर

6

मॉडल में पहला डॉन का विस्तार नहीं करें (play.db.jpa.Model) मॉडल जिसे आप आईडी उत्पन्न करना चाहते हैं लेकिन जेनेरिक मॉडेल का उपयोग करें।

तो आप सहायक वर्ग है कि जब वस्तु (निर्माता में) बनाया जाता है कहा जाता है इस्तेमाल कर सकते हैं।

या सहायक वर्ग जब बचाया फोन (इस प्रकार मैं आवरण डीएओ बनाने के लिए, को बचाने की प्रक्रिया वस्तु में आवरण डीएओ में नहीं किया जाता है तो यह है कि मैं आईडी उत्पन्न कर सकता है वस्तु बचाने के लिए)

या यदि आप अधिक सरल दृष्टिकोण जेपीए यूयूआईडी का उपयोग करना चाहते हैं। नीचे कोड देखें।

@Entity 
public class User extends GenericModel { 
    @Id 
    @GeneratedValue(generator = "system-uuid") 
    @GenericGenerator(name = "system-uuid", strategy = "uuid") 
    public String id; 
} 
+0

जेनेरिक मॉडल: क्या यह एक विरोधी पैटर्न नहीं है? कृपया देखें: http://en.wikipedia.org/wiki/BaseBean – Kowser

+0

विकि पर टिप्पणी और विकी है कि कहते हैं कि "इस लेख की तटस्थता विवादित है" तो अनुचित में इस विरोधी पैटर्न बुलाया की तटस्थता को देखते हैं। – indrap

+0

हाँ, मैं ऐसा देखता हूं। इस मुद्दे को स्पष्ट करने के लिए और अधिक अध्ययन करने की आवश्यकता है। – Kowser

5

खैर, मॉडल वर्ग GenericModel का सिर्फ एक उप-वर्ग है जो एक अपने मॉडल कक्षाओं के लिए @Id संपत्ति के रूप में लंबे समय से उत्पन्न प्रदान करने के लिए विशेषता, तरीके और एनोटेशन जोड़ता है।

यदि आप इसे नहीं चाहते हैं, तो आप इसके बजाय जेनेरिकमोडेल को उपclass कर सकते हैं और अपना स्वयं का @Id प्रदान कर सकते हैं। आपके मामले में यूयूआईडी को पकड़ने के लिए एक स्ट्रिंग होगी। हालांकि, आपको नए मॉडल उदाहरणों पर इसे शुरू करने के लिए एक रणनीति तैयार करने की आवश्यकता होगी।

मुझे यूपीआईडी ​​उत्पन्न करने के लिए जेपीए द्वारा प्रदान की गई अंतर्निहित रणनीति के बारे में पता नहीं है। एक सरल तरीका यह है कि एक सहायक वर्ग होना चाहिए कि आप एक नया यूयूआईडी प्राप्त करने के लिए एक विधि को कॉल कर सकते हैं और सुनिश्चित कर सकते हैं कि हर बार जब आप एक नया मॉडल बनाते हैं तो आप कॉल करते हैं।