[英]How to do a Join Query on a Mysql fetch in 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;
(我不知道上面是否是最佳选择...但是它返回我想要的东西)
我将如何在JPQL中复制它?
我熟悉的简单的select fetch命令是:(除了使用内置命令之外)
String qlString = "Select p from Tokens p WHERE p.token=:token";
TypedQuery<Tokens> 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;
}
您从User
开始,然后将属性tokens
带到Token
实体,然后过滤Token
属性。
要获取列表,请使用:
List<String> infos = entityManager.createQuery(YOUR_QUERY).list();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.