如何使用 Kotlin Exposed Framework 从依赖于 Ktor 中的两个或多个条件的多对多关系查询实体?
How to query an Entity from a Many-to-Many realtionship dependendt on two ore more conditions in Ktor with the Kotlin Exposed Framework?
我有 3 个实体:
User
id: Int
name: String
Room
id: Int
name: String
RoomUser
id: Int
room_id: Int (Reference on Room.id)
user_id: Int (Reference on User.id)
现在假设我们有 2 个房间和 3 个用户:
房间:
id
name
1
Room1
2
Room2
用户:
id
name
3
User3
7
User7
9
User9
房间用户:
id
room_id
user_id
1
1
3
2
1
7
3
2
7
4
2
9
如您所见,User3和User7在房间Room1和User7 和 User9 在房间 Room2.
在我的用例中,我给出了例如 2 个用户。现在我想得到这两个用户所在的房间。
在这种情况下,当我给了用户 User3 和 User7 我想得到房间 Room1 或者当我给了用户 User7 和 User9 我想得到房间 Room2.
如何使用 Kotlin Exposed Framework 编写查询来获取这个特定的房间?
在 SQL 符号中应该是这样的:
SELECT room_id
FROM RoomUsers
where user_id in (3,7)
GROUP BY room_id
HAVING count(*) = 2
暴露在外:
RoomUsers
.slice(RoomUsers.roomId)
.select{
RoomUsers.userId inList listOf(User3.id, User7.id)
}
.groupBy(RoomUsers.roomId)
.having {
RoomUsers.userId.count() eq 2
}.map {
it[RoomUsers.roomId]
}
我有 3 个实体:
User |
---|
id: Int |
name: String |
Room |
---|
id: Int |
name: String |
RoomUser |
---|
id: Int |
room_id: Int (Reference on Room.id) |
user_id: Int (Reference on User.id) |
现在假设我们有 2 个房间和 3 个用户:
房间:
id | name |
---|---|
1 | Room1 |
2 | Room2 |
用户:
id | name |
---|---|
3 | User3 |
7 | User7 |
9 | User9 |
房间用户:
id | room_id | user_id |
---|---|---|
1 | 1 | 3 |
2 | 1 | 7 |
3 | 2 | 7 |
4 | 2 | 9 |
如您所见,User3和User7在房间Room1和User7 和 User9 在房间 Room2.
在我的用例中,我给出了例如 2 个用户。现在我想得到这两个用户所在的房间。
在这种情况下,当我给了用户 User3 和 User7 我想得到房间 Room1 或者当我给了用户 User7 和 User9 我想得到房间 Room2.
如何使用 Kotlin Exposed Framework 编写查询来获取这个特定的房间?
在 SQL 符号中应该是这样的:
SELECT room_id
FROM RoomUsers
where user_id in (3,7)
GROUP BY room_id
HAVING count(*) = 2
暴露在外:
RoomUsers
.slice(RoomUsers.roomId)
.select{
RoomUsers.userId inList listOf(User3.id, User7.id)
}
.groupBy(RoomUsers.roomId)
.having {
RoomUsers.userId.count() eq 2
}.map {
it[RoomUsers.roomId]
}