【发布时间】:2012-12-31 20:53:45
【问题描述】:
我有两张桌子,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 对应的行,我仍然想获取该用户。
有什么想法吗?
edit - 将问题编辑为实际上是正确的。即使用户没有关联的业务合作伙伴 ID,我仍然想返回用户
【问题讨论】: