pengembang Salat utama di sini.
Seperti yang disarankan Milan, buat kelas kasus untuk kunci komposit Anda:
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 */ )
Jika Anda menolak "_id" sebagai nama bidang, Anda dapat menggunakan penggantian global dalam konteks untuk memetakan ulang "_id" ke "naturalKey", atau menyediakan penggantian @Key ad hoc pada setiap objek.
Saya pribadi tidak suka memberi _id nama yang berbeda dalam model Anda karena kueri Mongo Anda harus menggunakan kunci serial "_id" sementara semua logika bisnis Anda harus menggunakan nama bidang kelas kasus ("naturalKey" atau apa pun), tetapi YMMV .
P.S. Milis kami ada di http://groups.google.com/group/scala-salat - Saya akan melihat pertanyaan Anda lebih cepat daripada Stack Overflow.