Java JPQL检查多对多关系
只是一个简单的问题: 有一个实体(例如用户)通过多个关系连接到同一个实体(例如,这个关系描述了“友谊”,并且是对称的) 在执行时间方面,检查用户A是否是用户B的“朋友”的最快方法是什么?“愚蠢”的方法是获取整个列表,然后检查用户是否存在,但这显然是开销 我用的是JPA2 以下是示例代码:Java JPQL检查多对多关系,java,jpa,jpql,jpa-2.0,Java,Jpa,Jpql,Jpa 2.0,只是一个简单的问题: 有一个实体(例如用户)通过多个关系连接到同一个实体(例如,这个关系描述了“友谊”,并且是对称的) 在执行时间方面,检查用户A是否是用户B的“朋友”的最快方法是什么?“愚蠢”的方法是获取整个列表,然后检查用户是否存在,但这显然是开销 我用的是JPA2 以下是示例代码: @Entity @Table(name="users") public class UserEntity { @ManyToMany(fetch = FetchType.LAZY) privat
@Entity
@Table(name="users")
public class UserEntity {
@ManyToMany(fetch = FetchType.LAZY)
private List<UserEntity> friends;
....
}
@实体
@表(name=“users”)
公共类用户实体{
@ManyToMany(fetch=FetchType.LAZY)
私人名单朋友;
....
}
如果您不想检索整个列表,那么使用的成员怎么样?大概是这样的:
SELECT user FROM UserEntity user WHERE :friend MEMBER OF user.friends
那会给你所有有B作为朋友的人。如果要将结果限制为仅限,请在WHERE子句中添加条件
但不确定这是实现你想要的最好方式。“愚蠢”的方法实际上看起来并不愚蠢。谢谢!这正是我需要的。如果:friend是id,而不是实体引用,您还可以建议如何修改查询吗?对于这个简单的问题我深表歉意,但我对JPQL有点迷茫:-)@Juriy您能分享一下您找到的解决方案吗?