2016-03-09 139 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