3

Query パラメータで使用するために、任意のマッパーから目的のフィールドを取得するにはどうすればよいですか。

私の場合、「目的のフィールド」が value = somevalue であるレコードを見つけたいと考えています。

以下の方法で試しました

foo(Users)

// foo defined here...

def foo ( modelObject:Mapper[_])={

    var field =modelObject.fieldByName("UserName").openTheBox.asInstanceOf[MappedField[_,Users]]
    var requiredUser = modelObject.find(By(field, "dummyUser")

}

しかし、実際の Mapper を指定する必要がありますasInstanceOf[MappedField[_,Users]]( Users インスタンスはここに渡されます )。「ユーザー」だけでなく、どのマッパーでも機能するようにしたいと考えています。

では動作しませんasInstanceOf[MappedField[_,_]]

各マッパーには必要なフィールドがない可能性があることを理解しています。その場合、.fieldByName()関数が何らかの例外をスローする必要がある場合、それは受け入れられます。しかし、少なくともファイルを持っている人にとっては、うまくいくはずです。

誰でもこれで私を助けることができます...

4

2 に答える 2

1
def foo[A<: Mapper[A],T](modelObject: A) = {
  val field = modelObject.asInstanceOf[Mapper[A]].fieldByName("userName").openTheBox.asInstanceOf[MappedField[T, A]]
  modelObject.asInstanceOf[MetaMapper[A]].find(By(field, "dummyUser".asInstanceOf[T])
}

あなたが電話するとき、あなたはこのようなことをすることができます:

foo[Users,String](Users)
于 2011-12-02T19:40:59.100 に答える
0

これらすべてを実行するスーパー メソッドを用意する代わりに、ルックアップ関数をパラメーターとして渡してはいかがでしょうか。

def foo[T](find: () => Option[T]) : Option[T] =  find()

そしてこれを呼び出します:

foo[User](() => User.find(By(User.userName, "dummy"))
于 2011-12-22T19:12:57.207 に答える