我必须查询Message
提供的列表中的一个,Groups
并且Deactivated
当前用户没有。下面是一些伪代码来说明属性和实体:
class Message {
private int messageId;
private String messageText;
}
class Group {
private String groupId;
private int messageId;
}
class Deactivated {
private String userId;
private int messageId;
}
这是我需要查询的内容的一个想法,它是我不知道该怎么做的最后一个 AND 子句(我组成了复合NOT IN
表达式)。按 userId 过滤停用的消息可能会导致多个 messageId,如何检查该行子集是否不包含 messageId?
SELECT msg FROM Message msg, Group group, Deactivated unactive 在哪里 group.messageId = msg.messageId AND (group.groupId = 'groupA' OR group.groupId = 'groupB' OR ...) AND ('someUserId', msg.messageId) 不在 (unactive.userId, unactive.messageId)
注意:...
因为我不知道 groupIds 的数量提前。我收到它们,Collection<String>
所以我需要遍历它们并将它们动态添加到 JPQL。