Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 使用外键字段在Slick中过滤_Scala_Slick_Slick 2.0 - Fatal编程技术网

Scala 使用外键字段在Slick中过滤

Scala 使用外键字段在Slick中过滤,scala,slick,slick-2.0,Scala,Slick,Slick 2.0,是否可以在光滑的where或filter语句中使用外键字段 类似于(其中,user字段是表的外键,user是其映射投影)(不编译): 还是应该明确地使用外键 def findByUser(user: User)(implicit s: Session): Option[Token] = tokens.where(_.userId === user.id).firstOption 是的,身份证很好 def findByUserId(userId: Long)(implicit s: Se

是否可以在光滑的
where
filter
语句中使用外键字段

类似于(其中,
user
字段是表的外键,
user
是其映射投影)(不编译):

还是应该明确地使用外键

def findByUser(user: User)(implicit s: Session): Option[Token] =
    tokens.where(_.userId === user.id).firstOption
是的,身份证很好

def findByUserId(userId: Long)(implicit s: Session): Option[Token] =
    tokens.filter(_.userId === userId).firstOption

findByUserId( user.id )
这允许使用该方法,即使您只有一个id。Slick故意公开关系模型(带有功能性的触摸),并且不隐藏它,原因之一是使用id而不是对象引用允许引用不只是通过id加载到内存中的行

或者更好更简单,因为它内置于Slick中:

val findByUserId = tokens.findBy(_.userId) // pre-compiles SQL for better performance
findByUserId(user.id).firstOption

第二种方法比第一种方法快吗?它预编译查询,因此,如果将val存储在可重用的位置,可以节省一些开销,而且显然是线程安全的,对吗?其在FP语音中的非确定性:)
val findByUserId = tokens.findBy(_.userId) // pre-compiles SQL for better performance
findByUserId(user.id).firstOption