我想所有Branch
的列表,即使他們有沒有賬戶user
作用JPQL LEFT JOIN不工作
Query query = em.createQuery("SELECT NEW com.package.BranchInstructors(b,a) FROM Branch b LEFT JOIN b.accounts a WHERE b.dFlg = 0 AND a.userRole = :role ORDER BY b.name ASC");
query.setParameter("role", "user");
return query.getResultList();
不幸的是它僅返回分行與user
作用,它就像做INNER JOIN代替。
任何想法是怎麼回事?
它有使用'WITH'時出錯語法錯誤解析查詢[SELECT NEW com.package.BranchInstructors(b,a)FROM分支b LEFT JOIN b.accounts WITH WITH a.userRole =:role WHERE b.dFlg = 0 ORDER BY b .name ASC],第1行,第93列:意外標記[WITH]' –
您使用的JPA實現是什麼版本?嘗試使用'ON'而不是'WITH'。 – Dherik
我不確定什麼版本,我使用GlassFish 3.1.2的JSF 2.1,但這是詳細的錯誤'異常[EclipseLink-8025](Eclipse持久性服務 - 2.3.2.v20111125-r10461):org.eclipse .persistence.exceptions.JPQLException 異常說明:解析查詢的語法錯誤[SELECT NEW com.package.BranchInstructors(b,a)FROM分支b LEFT JOIN b.accounts a ON a.userRole =:role WHERE b.dFlg = 0 ORDER BY b.name ASC],第1行,第93列:意外標記[ON]。內部異常:NoViableAltException(80 @ [()*回送477:9:(node = join)*])'我剛剛接管了這個項目 –