簡體   English   中英

使用內部聯接在2個不同的表中進行Entitymanager查詢

[英]Entitymanager query in 2 different tables with inner join

我當前的代碼:

TypedQuery<Account> tp = em.createQuery("SELECT a FROM Account a INNER JOIN User u ON u.account_id = a.id WHERE a.email = :email AND a.pwd = :pwd AND a.role = 'admin'", Account.class);
                tp.setParameter("email", this.username);
                tp.setParameter("pwd", this.password);
                Account result = tp.getSingleResult();

但生病了java.lang.IllegalArgumentException。

我需要在用戶表中顯示一列。

類似於String name = Account.getName(); 但是帳戶實體沒有用戶實體只有的getName()。

*更新

這是錯誤

java.lang.IllegalArgumentException:在EntityManager中創建查詢時發生異常:異常描述:語法錯誤解析查詢[選擇FROM FROM帳戶a INNER JOIN用戶u ON u.account_id = a.id WHERE a.email =:email AND a.pwd =:pwd AND a.role ='admin']。 內部異常:org.eclipse.persistence.internal.libraries.antlr.runtime.EarlyExitException

文章解釋了,你必須參加這樣的:你specifiy一個昏迷分隔的表名,並且您將ON的狀態WHERE

TypedQuery<Account> tp = em.createQuery("SELECT a FROM Account a, User u   WHERE u.account_id = a.id AND a.email = :email AND a.pwd = :pwd AND a.role = 'admin'", Account.class);
            tp.setParameter("email", this.username);
            tp.setParameter("pwd", this.password);
            Account result = tp.getSingleResult();

嘗試這個。

result.getUser().getName();

但是,這是在假設您的Account類與User類有關系的情況下進行的。

假設是Hibernate / JPA關系是基於您先前的問題以及上面的代碼中使用HQL

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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