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