2016-03-09 112 views
0

我有使用JPA的问题,我需要返回用户的列表,但我总是得到用户的ID是从JPA命名查询加入

这其中是否正常工作,并返回你的用户以下:

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

此查询总是返回id参数的用户(PARAM = 1个返回user1的,而不是你之后是用户)

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

表看起来是这样的,两列是用户表的ID。

正如你可以看到:

  • USER4了2名追随者
  • 用户3有1个关注
  • 用户2是继2个用户
  • 用户1以下1个用户

The table

Thi s是由JPA产生了ArrayList的

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

现在你有一些背景资料,我会去点

User table

跟随表用户表。

当用户2,我可以看到我下面用户3和用户4.但是,如果我是用户3我不能看到用户2跟着我(这总是返回用户3以某种方式)

如果您需要更多的信息随时问

+1

为什么不做“从用户u选择你的u.id =:id”并通过你的java代码中的u.getFollowers()访问folowers?如果你的实体有这种关系,你不需要明确的加入。 – Desorder

+0

不错的一个!我正在让自己更难以应付。我这样做我做了干净的代码。现在已经很晚了...睡了一个晚上的好时光,有些想着这个 – Isene112

+0

我会把它作为答案,所以你可以把它标记为正确的是帮助你。 :) – Desorder

回答

1

你为什么不选择“从用户u选择你的u.id =:id”并通过你的java代码中的u.getFollowers()访问关注者?如果你的实体有这种关系,你不需要明确的加入。

+0

谢谢:-)真的有一个brainfart时刻... – Isene112