2014-08-28 77 views
0

我有一個表的用戶如何做一個MySQL連接查詢獲取在JPQL

Id(key) | username | some other cols...n 

和一張桌子令牌:

userID, Token (k) 

用戶ID在令牌被定義爲從外鍵users.id。

我想要做的就是能夠:給定一個Tokens.token,從用戶處獲取col信息。

在SQL mysql命令就像這樣:

select a.* from users a left join tokens b on a.User_Id = b.userId and b.userId = 1; 

(我不知道上面是最佳......但它返回我想要什麼)

我怎麼會複製在JPQL ?

簡單的選擇獲取命令我是familar與是:

String qlString = "Select p from Tokens p WHERE p.token=:token"; 
     TypedQuery<Tokens> query = this.entityManager.createQuery(qlString,Tokens.class).setParameter("token", token); 
+0

你需要這樣的東西'選擇P檔的形式加入令牌p.user',添加entitties一個更好的答案 – 2014-08-28 23:12:22

+0

@AVolpe假設我的實體映射像上面。 。 類用戶具有Int Id和類標記具有int userID – nate 2014-08-29 02:10:30

回答

0

當你使用JPA,你不介意的表和列(不是使用內置的一個除外),可以使用實體和關係,查詢必須是:

select u.info from User u join u.tokens t where t.token = :token 

這是假設:

@Entity class User { 
    @OneToMany List<Token> tokens; 
    String info; 
} 

@Entity class Token { 
    String token; 
} 

您從開始,然後使用您的屬性tokens轉至Token實體,並篩選Token屬性。

爲了讓您使用列表:

List<String> infos = entityManager.createQuery(YOUR_QUERY).list();