JPA 命名查询连接

JPA Named query join

我遇到了 JPA 问题,我需要 return 一个用户列表,但我总是得到用户 ID 来自

这个工作正常,return您正在关注的用户:

@NamedQuery(name = "User.findByFollowing",
                        query = "select User from User user join user.followers f where f.id=:id"),

这个查询总是returns id 参数的用户(param=1 returns user1 而不是你所关注的所有用户)

  @NamedQuery(name = "User.findFollower",
            query = "select User, f from User user join user.followers f where user.id=:id")

table 看起来像这样,两列都是用户 table 的 ID。

如您所见:

这是用户 table

follower table 由 JPA 使用 arraylist

生成
@OneToMany(cascade = CascadeType.ALL, orphanRemoval = true)
    private List<User> followers = new ArrayList();

现在你已经了解了一些背景信息,我将进入正题。

作为用户 2,我可以看到我正在关注用户 3 和用户 4。但是如果我是用户 3,我看不到用户 2 在关注我(这总是 return 用户 3 在某种程度上)

如果您需要更多信息,请随时询问

您为什么不 "select u from User u where u.id = :id" 并通过 java 代码中的 u.getFollowers() 访问关注者?如果您的实体具有关系,则您不需要明确需要连接。