繁体   English   中英

JPQL检查多对多关系

[英]JPQL check many-to-many relationship

只是一个简单的问题:

有一个实体(例如User)与ManyToMany关系连接到同一个实体(例如,这个关系描述了“友谊”,它是对称的)。

检查用户A是否是用户B的“朋友”的执行时间最快的方法是什么? “愚蠢”的方式是获取整个List,然后检查用户是否存在,但这显然是开销。

我正在使用JPA 2

这是示例代码:

@Entity
@Table(name="users")
public class UserEntity {
    @ManyToMany(fetch = FetchType.LAZY)
    private List<UserEntity> friends;

    ....
}

如果您不想检索整个列表,那么使用MEMBER OF会怎么样? 像这样的东西:

SELECT user FROM UserEntity user WHERE :friend MEMBER OF user.friends

这会给你所有以B为朋友的人。 如果要将结果限制为仅限A,请在WHERE子句中添加条件。

不确定这是实现你想要的最佳方式。 实际上,“愚蠢”的方法看起来并不那么愚蠢。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM