簡體   English   中英

如何在JPQL中對Mysql進行聯接查詢

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM