3

我们如何从任何映射器中检索所需的文件以便在查询参数中使用它。

就我而言,我想找到我的“期望字段”具有值 = 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")

}

但随后它迫使我在asInstanceOf[MappedField[_,Users]](用户实例在此处传递)中指定实际的映射器。我想让它适用于任何映射器,而不仅仅是“用户”。

它不适用于asInstanceOf[MappedField[_,_]]

我知道每个 Mapper 可能没有我想要的字段,在这种情况下,如果.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 回答