2014-08-28 50 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();