我有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表以获取用户字段。
我返回的内容有哪些?我想我必须创建一个新的案例类并以某种方式映射到字段?
答案 0 :(得分:2)
我认为你的问题(虽然我可能是错的)实际上并不是仅仅通过案例类(又名unpacked type
)和表格映射(又名mixed type
)来引用案例类。同样重要的是要了解Slick
不会以任何方式帮助您实现一对多/多对多关系(它不是ORM)。这里多一点:https://stackoverflow.com/a/42218139/2239369
长话短说 - 您的联接表与其他表一样。一般直截了当的答案是:是。只需再创建一个case class
和table definition
。
您肯定需要联接表定义(简而言之 - 此类继承自Slick
s Table
类型 - mixed type
)。否则你将无法生成适当的查询。你可能会远离创建案例类 - 但我不确定它是否值得这样做 - 毕竟它还有一个额外的行,对吧? (case class UserList(id: Id, listId: Id, userId: Id)
- 或接近此的东西)。
或许值得一提的是,您也可以通过在数据库级别创建视图来远离上述所有内容。