1
多个成员,如果有任何JPQL结构,它可以帮助我解决这个问题:JPQL的
想象聊天和用户的简单的M-N的关系(用户可能存在于多个聊天-S)。
public class ChatEntity implements Serializable {
@ManyToMany(targetEntity = UserEntity.class)
@JoinTable(name = "CHATS_USERS",
joinColumns = @JoinColumn(name = "CHAT_ID"),
inverseJoinColumns = @JoinColumn(name = "USER_ID"))
private Collection<User> users;
}
让我们想象一下这些数据(C1..CN =聊天的ID,U1..UN =用户ID)
c1 ~ {u1, u2, u3} // in chat1 is user1, user2 and user3
c2 ~ {u1, u3}
c3 ~ {u2, u3}
现在我想选择这样的聊天具有用户完全相同的集合i。将传递给查询。例如。
{u1, u3} -> c2
{u1, u2, u3} -> c1
{u1, u2} -> NULL (no result)
我发现构件的构件看起来不错。例如。
SELECT c FROM Chat c WHERE (:u1 MEMBER OF c.users) AND (:u2 MEMBER OF c.users)
... AND (:uN MEMBER OF c.users)
但现在有两个问题
这是至今没有正确的,因为{U1,U3}将返回两个C1和C2不仅C2如预期
我收到了用户的集合,我不知道是否有办法如何将这种集合“分解”为中的多个AND子句,命名查询为(查询的静态定义),或者是否有任何JPQL构造可以帮助我解决这个问题。例如。像
... WHERE:用户= c.users
谢谢回答,我会检查出来 – d1x 2012-04-04 16:36:52
尺寸做到了。其实它不是很好(添加新的参数),但它满足:) – d1x 2012-10-11 11:06:56