我一直在使用Scala和Play Framework大约一个月了,我仍然没有找到一种使用anorm库编写SQL请求的愉快方法。
在我的应用程序中,我经常发现自己在做这类事情:
// projectId and componentId are foreign keys.
case class ProjectComponent(id: Pk[Int], projectId: Int, componentId: Int)
object ProjectComponent extends Magic[Event]
{
def findForProject(project: Project) : List[ProjectComponent]
{
val projectId = project.id.get.get
ProjectComponent.find("projectId=" + projectId).list()
}
}
我不满意的一句话是:
// project.id returns Pk[Int]
// project.id.get returns Option[Int]
// project.id.get.get returns Int
val projectId = project.id.get.get
有没有更好的方法将项目ID作为整数?考虑一下我只需要项目ID来编写查询。 Play中可能有一个自动处理Pk类型的函数。
我是Scala和Play的新手,所以我可能错过了文档中显而易见的内容。
谢谢,
Clem
答案 0 :(得分:1)
我不知道如何直接在查询中使用Pk,尽管如果可能的话我不会感到惊讶。至于检索Pk值,我在Pk类上找到了以下内容:
def apply() = get.get
因此这两个电话是等价的:
val projectId = project.id.get.get
val projectId = project.id()