我有两张桌子,User
并且UserBusinessPartnerIds
User(id, name, email, whatever)
UserBusinessPartnerIds(userId, bpId)
我正在尝试检索用户和业务合作伙伴 ID 列表。
以下查询工作正常!
database withSession { implicit session: Session =>
val query = (for {
(user, userBpid) <- Users leftJoin UserBusinessPartners on (_.id is _.userId)
if user.email === email &&
user.password === password &&
user.active === true &&
userBpid.dateFrom < today &&
userBpid.dateTo > today
} yield (user.id, userBpid.bpId.?))
val results = query.list
results.headOption.map( row => User(row._1, email, password, results.map(_._2).flatten.toSet))
}
诚然,代码的结尾令人发指。但是无所谓。
问题是,我希望做一个 OUTER join。因此,如果用户在另一个表中没有与业务伙伴 ID 对应的行,我仍然想获取该用户。
有任何想法吗?
编辑 - 将问题编辑为实际上是正确的。我仍然想返回一个用户,即使他们没有与之关联的业务合作伙伴 ID