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。
如您所见:
- user4 有 2 个关注者
- user3 有 1 个关注者
- 用户 2 正在关注 2 个用户
- 用户 1 正在关注 1 位用户
这是用户 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() 访问关注者?如果您的实体具有关系,则您不需要明确需要连接。
我遇到了 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。
如您所见:
- user4 有 2 个关注者
- user3 有 1 个关注者
- 用户 2 正在关注 2 个用户
- 用户 1 正在关注 1 位用户
这是用户 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() 访问关注者?如果您的实体具有关系,则您不需要明确需要连接。