我正在使用带有slick 2.1的MySQL。
我有一个表Users
,Cars
存储用户拥有的汽车,garages
存储汽车的信息,表User_contact
存储联系人用户的详细信息。
我希望使用他的ID,联系方式以及他拥有的汽车和车库的数量来获取用户信息。为此,我写了以下代码:
user.filter( _ .id === id).leftJoin(cars).on {
case (user, car) => user.id === car.userId
}.leftJoin(garage).on {
case ((_, car), garage) => car.id === garage.carId
}.leftJoin(userContacts).on {
case (((user, _), _), contact) => user.id === contact.userId
}.groupBy { case (((user, _), _ ), contact) => (user, contact) }.map {
case ((user, contact), usrGroup) => (usr.id, usrGroup.map { case (((_, cars), _), _ ) => cars.id }.length, usrGroup.map { case (((_, _), garage), _) => garage.id }.length, contact)
}
这导致
Execution exception[[SlickException: No type for symbol s44 found in {description: Option[$anon$1/VARCHAR(254)], first_name: Option[$anon$1/VARCHAR(254)], timezone_code: Option[$anon$1/VARCHAR(254)], profile_id: Option[Long/BIGINT], id: Int/INTEGER, dob: Option[Date/DATE], gender: Option[$anon$1/VARCHAR(254)], email_id: $anon$1/VARCHAR(254), inset: Option[$anon$1/VARCHAR(254)], last_name: Option[$anon$1/VARCHAR(254)], created_time: Timestamp/TIMESTAMP}]]
在运行时。有人可以帮助指出可能的原因吗?它工作得很好,如果我只按user
分组,但如果我添加contact
字段则不行。