मुख्य सलात डेवलपर यहाँ।
जैसे मिलान ने सुझाव दिया, अपनी समग्र कुंजी के लिए केस क्लास बनाएं:
case class FooKey(someRelatedId: String, email: String)
case class Foo(@Key("_id") naturalKey: FooKey) {
// use @Persist if you want these fields serialized verbatim to Mongo - see https://github.com/novus/salat/wiki/Annotations for details
@Persist val email = naturalKey.email
@Persist val someRelatedId = naturalKey.someRelatedId
}
object FooDAO extends SalatDAO[Foo, FooKey](collection = /* some Mongo coll */ )
यदि आप फ़ील्ड नाम के रूप में "_id" पर आपत्ति करते हैं, तो आप "_id" को "naturalKey" में रीमैप करने के लिए संदर्भ में वैश्विक ओवरराइड का उपयोग कर सकते हैं, या प्रत्येक ऑब्जेक्ट पर तदर्थ @Key ओवरराइड की आपूर्ति कर सकते हैं।
मैं व्यक्तिगत रूप से आपके मॉडल में _id को एक अलग नाम देना पसंद नहीं करता क्योंकि तब आपके मोंगो प्रश्नों को क्रमबद्ध कुंजी "_id" का उपयोग करना चाहिए, जबकि आपके सभी व्यावसायिक तर्कों को केस क्लास फ़ील्ड नाम ("नेचुरलकी" या जो कुछ भी) का उपयोग करना चाहिए, लेकिन वाईएमएमवी .
पी.एस. हमारी मेलिंग सूची http://groups.google.com/group/scala-salat<पर है /ए> - मैं स्टैक ओवरफ़्लो की तुलना में आपका प्रश्न वहां जल्दी देखूंगा।