テーブルが 2 つ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 結合を実行したいということです。したがって、ユーザーが他のテーブルのビジネス パートナー ID に対応する行を持っていない場合でも、そのユーザーを取得したいと考えています。
何か案は?
編集 - 質問を実際に正しくなるように編集しました。ビジネス パートナー ID が関連付けられていない場合でも、ユーザーを返したい