我想所有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)*])'我刚刚接管了这个项目 –