Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在JPQL中对Mysql获取执行连接查询_Java_Mysql_Sql_Hibernate_Jpql - Fatal编程技术网

Java 如何在JPQL中对Mysql获取执行连接查询

Java 如何在JPQL中对Mysql获取执行连接查询,java,mysql,sql,hibernate,jpql,Java,Mysql,Sql,Hibernate,Jpql,我有一张桌子 Id(key) | username | some other cols...n 和表令牌: userID, Token (k) 令牌中的userID定义为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; (我不知道上面的结果

我有一张桌子

Id(key)  |  username | some other cols...n
和表令牌:

userID, Token (k)
令牌中的userID定义为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中复制它

我熟悉的简单select fetch命令是:(使用内置命令除外)

String qlString=“从令牌p中选择p,其中p.token=:token”;
TypedQuery query=this.entityManager.createQuery(qlString,Tokens.class).setParameter(“token”,token);

当您使用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;
}

您需要类似于
Select p form Tokens join p.user
,添加您的实体以获得更好的性能answer@AVolpe假设我的实体像上面那样映射。。类用户具有Int-Id,类令牌具有Int-userID
@Entity class User {
    @OneToMany List<Token> tokens;
    String info;
}

@Entity class Token {
    String token;
}
List<String> infos = entityManager.createQuery(YOUR_QUERY).list();