2012-06-23 22 views
15

मैं डीबी तक पहुंचने के लिए स्कैला और एनोर्म का उपयोग करके Playframework 2.0 एप्लिकेशन लिख रहा हूं।एर्म के पीके का उद्देश्य क्या है?

वर्तमान में मैं Pk[Long]id फ़ील्ड के लिए उपयोग कर रहा हूं और मुझे वास्तविक मूल्य तक पहुंचने के लिए अतिरिक्त get कॉल के बारे में चिंता है। तो मैं id फ़ील्ड के लिए सादा Long का उपयोग करना शुरू करता हूं और सब कुछ अभी भी सही काम करता है।

क्या Pk है, और क्या इसे सादा प्रकारों के बजाय इसका उपयोग करना चाहिए? क्या Pk मुझे सादे प्रकारों पर अतिरिक्त सुविधाएं/लाभ देता है?

उत्तर

18

Pk आपको टाइप की गई प्राथमिक कुंजी निर्दिष्ट करने की अनुमति देता है।

इसके अलावा, कहते हैं कि तुम इस तरह एक काल्पनिक मॉडल है:

case class MyModel(id: Pk[Long], foo: String) 

आप के साथ अपने मॉडल का एक उदाहरण के निर्माण का लाभ:

MyModel(anorm.NotAssigned, "notKnownAtRuntime") 

... अगर अपने डेटाबेस जिम्मेदार है अपनी चाबियाँ बनाने के लिए, या अन्यथा:

MyModel(anorm.Id(123L), "knownAtRuntime") 
+0

मुझे 'NotAssigned' के बारे में पता है, यह आसान है, क्योंकि आईडी automatica उत्पन्न करता है lly। मैंने सोचा कि कुछ और है। वैसे भी धन्यवाद! – lambdas

+4

'विकल्प [लांग] 'का उपयोग क्यों नहीं करते और फिर अपने ऑब्जेक्ट को' कोई नहीं 'या' कुछ (123 एल) 'के साथ प्रारंभ करें? – maklemenz

+2

@mklemenz क्योंकि '' 'केस क्लास माईमोडेल (आईडी: पीके [लांग], आईडी 2: पीके [लांग])' '' ''क्लास क्लास माईमोडेल (आईडी: विकल्प [लांग], आईडी 2: विकल्प [ लंबा]) '' 'संकलित करता है –

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

  • कोई संबंधित समस्या नहीं^_^