HQL left join: Path expected for join

I am new at Hibernate, and I have a question regarding HQL Left join. I try to left join 2 tables, patient and provider, and keep getting "Path expected for join!" error on the second table. Appreciate it if anybody can help on this issue! Here is the mapping of the 2 tables/classes: patient.hbm.xmL: ------------------- provider.hbm.xml: ----------------- pojo: patient.java package com.ccg.db.test; import java.io.Serializable; import java.util.List; import org.hibernate.Session; public class patient implements Serializable { private int patientId; private String patientName; private String providerId; // foreign key to provider private static final long serialVersionUID = 81073; public static void load(Session session, List values){ patient PatientInfo = new patient(); PatientInfo.setPatientId(Integer.parseInt(values.get(0))); PatientInfo.setPatientName( values.get(1)); PatientInfo.setProviderId( values.get(2) ); session.save( PatientInfo ); } /** * @return the PatientId */ public int getPatientId() { return patientId; } /** * @param PatientId the PatientId to set */ public void setPatientId(int PatientId) { this.patientId = PatientId; } /** * @return the PatientName */ public String getPatientName() { return this.patientName; } /** * @param PatientName the PatientName to set */ public void setPatientName(String PatientName) { this.patientName = PatientName; } /** * @return the ProvId */ public String getProviderId() { return this.providerId; } /** * @param id the ProviderId to set */ public void setProviderId( String id ) { this.providerId = id; } /** * @return the ProvId */ public String getProvider() { return this.providerId; } /** * @param id the ProviderId to set */ public void setProvider( String id ) { this.providerId = id; } /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub } } provider.java: package com.ccg.db.test; import java.io.Serializable; import java.util.List; import org.hibernate.Session; public class provider implements Serializable { private String providerId; private String providerName; //private int patientId; //private int providerSpec; private static final long serialVersionUID = 81073; public static void load(Session session, List values){ provider ProviderInfo = new provider(); ProviderInfo.setProviderId( values.get(0) ); ProviderInfo.setProviderName( values.get(1)); //ProviderInfo.setProviderSpec( Integer.parseInt(values.get(2)) ); session.save( ProviderInfo ); } /** * @return the ProviderName */ public String getProviderName() { return providerName; } /** * @param ProviderName the ProviderName to set */ public void setProviderName(String name) { this.providerName = name; } /** * @return the ProvId */ public String getProviderId() { return this.providerId; } /** * @param id the ProvId to set */ public void setProviderId( String id ) { this.providerId = id; } /* public int getPatientId() { return this.patientId; } public void setPatientId( int id ) { this.patientId = id; } */ /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub } } ----------------------- Here is the left join query: select pat.patientId, pat.patientName from patient as pat left join provider as pro where pat.providerId = pro.providerId ------------------ and here is the result:
0:50:08,479 INFO query:156 - Query = outerJoin
10:50:08,479 INFO query:157 - select
pat.patientId, pat.patientName
from
patient as pat 
left join
provider as pro 
where
pat.providerId = pro.providerId

10:50:08,698 ERROR PARSER:33 - Path expected for join!
10:50:08,698 ERROR PARSER:33 - Invalid path: 'pro.providerId'
10:50:08,698 ERROR PARSER:33 - right-hand operand of a binary operator was null
10:50:08,698 ERROR query:184 - Problem generating query.
org.hibernate.hql.ast.QuerySyntaxException: Path expected for join! [select
pat.patientId, pat.patientName
from
com.ccg.db.test.patient as pat 
left join
provider as pro 
where
pat.providerId = pro.providerId
]
at org.hibernate.hql.ast.QuerySyntaxException.convert(QuerySyntaxException.java:31)
at org.hibernate.hql.ast.QuerySyntaxException.convert(QuerySyntaxException.java:24)
at org.hibernate.hql.ast.ErrorCounter.throwQueryException(ErrorCounter.java:59)
at org.hibernate.hql.ast.QueryTranslatorImpl.analyze(QueryTranslatorImpl.java:235)
at org.hibernate.hql.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:160)
at org.hibernate.hql.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:111)
at org.hibernate.engine.query.HQLQueryPlan.(HQLQueryPlan.java:77)
at org.hibernate.engine.query.HQLQueryPlan.(HQLQueryPlan.java:56)
at org.hibernate.engine.query.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:72)
at org.hibernate.impl.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:133)
at org.hibernate.impl.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:112)
at org.hibernate.impl.SessionImpl.createQuery(SessionImpl.java:1623)
at com.ccg.db.query.QueryManager.query(QueryManager.java:163)
at com.ccg.db.query.QueryManager.query(QueryManager.java:139)
at com.ccg.db.query.QueryManager.main(QueryManager.java:80)

If you want help, you need to show more respect for the time of those helping you and format your code to something readable. I'll give you one for free - the question should be almost readable now.

以上就是HQL left join: Path expected for join的详细内容,更多请关注web前端其它相关文章!

赞(0) 打赏
未经允许不得转载:web前端首页 » JavaScript 答疑

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

前端开发相关广告投放 更专业 更精准

联系我们

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏