为连接表创建新的案例类是否常见?

时间:2017-03-28 17:18:17

标签: scala slick

我有2个表,如:

users
id
name

lists
-id
-name

user_lists
id
list_id
user_id

所以我目前有一个返回的查询:

def getUsersByList(int listId): Future[Seq[UserList]] = {
  db.run( userLists.filter(f => f.listId === listId) )
}

现在我需要加入User表以获取用户字段。

我返回的内容有哪些?我想我必须创建一个新的案例类并以某种方式映射到字段?

1 个答案:

答案 0 :(得分:2)

我认为你的问题(虽然我可能是错的)实际上并不是仅仅通过案例类(又名unpacked type)和表格映射(又名mixed type)来引用案例类。同样重要的是要了解Slick不会以任何方式帮助您实现一对多/多对多关系(它不是ORM)。这里多一点:https://stackoverflow.com/a/42218139/2239369

长话短说 - 您的联接表与其他表一样。一般直截了当的答案是:。只需再创建一个case classtable definition

您肯定需要联接表定义(简而言之 - 此类继承自Slick s Table类型 - mixed type)。否则你将无法生成适当的查询。你可能会远离创建案​​例类 - 但我不确定它是否值得这样做 - 毕竟它还有一个额外的行,对吧? (case class UserList(id: Id, listId: Id, userId: Id) - 或接近此的东西)。

或许值得一提的是,您也可以通过在数据库级别创建视图来远离上述所有内容。