关于hibernate多表查询的问题

luoxiangggv 2009-08-17 11:17:32
from DvUser as du where du.ldInterViews.ldEpriseJobs='114'
from DvUser as du where du.ldInterViews.interViewTime'2008-9-10'
在上面的两句查询中,DvUser 与ldInterViews是一对多关系,ldInterViews与ldEpriseJobs是多对一关系,interViewTime是ldInterViews表中的一个属性,为什么我查询interViewTime能查,而查ldEpriseJobs就不能?在数据库中ldEpriseJobs中的主键是ldInterViews中的外键,请问应该怎样查?






补充下:
exception

javax.servlet.ServletException: illegal syntax near collection: ldEpriseJobs [from org.hiyoke.LASS.po.DvUser as du where du.ldInterViews.ldEpriseJobs='114']; nested exception is org.hibernate.hql.ast.QuerySyntaxException: illegal syntax near collection: ldEpriseJobs [from org.hiyoke.LASS.po.DvUser as du where du.ldInterViews.ldEpriseJobs='114']
org.apache.struts.action.RequestProcessor.processException(RequestProcessor.java:523)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:421)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.hiyoke.util.Filter.doFilter(Filter.java:22)


root cause

org.springframework.orm.hibernate3.HibernateQueryException: illegal syntax near collection: ldEpriseJobs [from org.hiyoke.LASS.po.DvUser as du where du.ldInterViews.ldEpriseJobs='114']; nested exception is org.hibernate.hql.ast.QuerySyntaxException: illegal syntax near collection: ldEpriseJobs [from org.hiyoke.LASS.po.DvUser as du where du.ldInterViews.ldEpriseJobs='114']
org.springframework.orm.hibernate3.SessionFactoryUtils.convertHibernateAccessException(SessionFactoryUtils.java:649)
org.springframework.orm.hibernate3.HibernateAccessor.convertHibernateAccessException(HibernateAccessor.java:408)
org.springframework.orm.hibernate3.HibernateTemplate.execute(HibernateTemplate.java:367)
org.springframework.orm.hibernate3.HibernateTemplate.execute(HibernateTemplate.java:328)
org.hiyoke.util.DaoSupportHibernate3Impl.findPageByQuery(DaoSupportHibernate3Impl.java:162)
org.hiyoke.LASS.qz.bo.QzServiceImpl.queryInfoByPage(QzServiceImpl.java:97)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:585)
org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:318)
org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:203)
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:162)
org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:107)
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:185)
org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:209)
$Proxy1.queryInfoByPage(Unknown Source)
org.hiyoke.LASS.recommend.action.RecommendAction.recommendPeopleList(RecommendAction.java:309)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:585)
org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:274)
org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:194)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:419)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.hiyoke.util.Filter.doFilter(Filter.java:22)


root cause

org.hibernate.hql.ast.QuerySyntaxException: illegal syntax near collection: ldEpriseJobs [from org.hiyoke.LASS.po.DvUser as du where du.ldInterViews.ldEpriseJobs='114']
org.hibernate.hql.ast.ErrorCounter.throwQueryException(ErrorCounter.java:59)
org.hibernate.hql.ast.QueryTranslatorImpl.analyze(QueryTranslatorImpl.java:225)
org.hibernate.hql.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:158)
org.hibernate.hql.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:109)
org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:75)
org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:54)
org.hibernate.engine.query.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:71)
org.hibernate.impl.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:133)
org.hibernate.impl.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:112)
org.hibernate.impl.SessionImpl.createQuery(SessionImpl.java:1583)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:585)
org.springframework.orm.hibernate3.HibernateTemplate$CloseSuppressingInvocationHandler.invoke(HibernateTemplate.java:1192)
$Proxy3.createQuery(Unknown Source)
org.hiyoke.util.DaoSupportHibernate3Impl$5.doInHibernate(DaoSupportHibernate3Impl.java:174)
org.springframework.orm.hibernate3.HibernateTemplate.execute(HibernateTemplate.java:362)
org.springframework.orm.hibernate3.HibernateTemplate.execute(HibernateTemplate.java:328)
org.hiyoke.util.DaoSupportHibernate3Impl.findPageByQuery(DaoSupportHibernate3Impl.java:162)
org.hiyoke.LASS.qz.bo.QzServiceImpl.queryInfoByPage(QzServiceImpl.java:97)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:585)
org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:318)
org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:203)
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:162)
org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:107)
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:185)
org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:209)
$Proxy1.queryInfoByPage(Unknown Source)
org.hiyoke.LASS.recommend.action.RecommendAction.recommendPeopleList(RecommendAction.java:309)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:585)
org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:274)
org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:194)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:419)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.hiyoke.util.Filter.doFilter(Filter.java:22)

...全文
295 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
luoxiangggv 2009-08-17
  • 打赏
  • 举报
回复
"from LdInterView as liv where liv.fsMeCorpUser='" + fmcUser.getCorpId() + "' and liv.ldEpriseJobs='"+ldEpriseJobs.getJobId()+"'");

这一句就是可以查询的,liv.fsMeCorpUser实际就是指的fsMeCorpUser表的主键corpId,liv.ldEpriseJobs就是指的ldEpriseJobs表的主键jobId
ThirstyCrow 2009-08-17
  • 打赏
  • 举报
回复
ldEpriseJobs不是一个字符串,怎么能跟字符串比较呢?
sangshusen_1988 2009-08-17
  • 打赏
  • 举报
回复
最好别组拼字符串,setParameter不是更好么
luoxiangggv 2009-08-17
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 hnnxzhoujia 的回复:]
看下是不是类型问题。ldEpriseJobs 是什么类型的?
[/Quote]

看我二楼的句子就知道了,呵呵,ldEpriseJobs 是个表名,也就是说我要查的是ldEpriseJobs.jobId,但写成ldEpriseJobs就可以了
blanalyh 2009-08-17
  • 打赏
  • 举报
回复
很好,学习学习
hnnxzhoujia 2009-08-17
  • 打赏
  • 举报
回复
看下是不是类型问题。ldEpriseJobs 是什么类型的?

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧