select t from TradesMan t join t.tradesManPs tp where t.kName like :kName and tp.oeNo like :oeNo"
解决方案 »
- jfreechart细节问题,急!急!急!
- 【求助】MyBatis的Order by操作无法赋值
- JAVA SWING做的一个C/S应用软件,安装后怎么样能让应用只打开一个窗口?
- struts中request不能得到已保存的对象
- 请问个Action问题
- How to get Ruby AST using JRuby?
- 我想在ssh框架中实现数据库备份怎么弄(mysql数据库)
- 这里下面为什么会出现jndi错误
- 请教oracle如何使用oracle的long类型?
- stateless session bean究竟快在那里,散分(续)
- jsp中怎么写方法?
- hibernate自带的指南有段话看不懂,谁给我说道说道
org.hibernate.hql.ast.QuerySyntaxException: Path expected for join! [select t from domain.TradesMan t left join TradesManPs tp where t.kCountry like :kCountry and t.kProvince like :kProvince and t.kCity like :kCity and tp.oeNo like '111111']
at org.hibernate.hql.ast.ErrorCounter.throwQueryException(ErrorCounter.java:59)
at org.hibernate.hql.ast.QueryTranslatorImpl.analyze(QueryTranslatorImpl.java:225)
at org.hibernate.hql.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:158)
at org.hibernate.hql.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:109)
at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:75)
at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:54)
at org.hibernate.engine.query.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:71)
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:1583)
at dao.hibernate.HibTradesManDao.getlistTradesManByArea(HibTradesManDao.java:238)
at logic.Facade.getlistTradesManByArea(Facade.java:710)
at web.dwr.provide.ProductSearchProvide.getDataListForTradesMan(ProductSearchProvide.java:87)
at web.dwr.handle.TradesmanSearchHandle.getTradesManList(TradesmanSearchHandle.java:32)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.directwebremoting.impl.ExecuteAjaxFilter.doFilter(ExecuteAjaxFilter.java:34)
at org.directwebremoting.impl.DefaultRemoter$1.doFilter(DefaultRemoter.java:310)
at org.directwebremoting.impl.DefaultRemoter.execute(DefaultRemoter.java:313)
at org.directwebremoting.impl.DefaultRemoter.execute(DefaultRemoter.java:172)
at org.directwebremoting.servlet.UrlProcessor.handle(UrlProcessor.java:130)
at org.directwebremoting.servlet.DwrServlet.doPost(DwrServlet.java:188)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at web.filters.EncodingFilter.doFilter(EncodingFilter.java:21)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:868)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:663)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
at java.lang.Thread.run(Thread.java:595)
Caused by: Path expected for join!
TradesMan.hbm.xml:<class name="domain.TradesMan" table="TradesMan"><!--把类和数表关联起来-->
<id name="lsId">
<generator class="increment"/>
</id>
<property name="prosecution" type="string"/>
……
<set
inverse="false"
lazy="false"
name="tradesManPs"
cascade="delete-orphan"
>
<key column="lsId" foreign-key="fk"/>
<one-to-many class="domain.TradesManP"/>
</set>
<many-to-one name="mUser" class="domain.MUser" column="userId" cascade="delete" not-null="false"/>
</class>TradesManP.hbm.xml配置如下:
<class name="domain.TradesManP" table="TradesManP"><!--把类和数表关联起来-->
<id name="lpId">
<generator class="increment"/>
</id>
<property name="oeNo" type="string"/>
……
<many-to-one name="tradesMan" class="domain.TradesMan" column="lsId" not-null="false"/>
</class>
包括对应hbm.xml文件中关联的处理以及相应的hql语句.
实在是郁闷啊.
select TradesMan.*
from orders TradesManPs
inner join customer TradesMan
on TradesManPs.cust_id=TradesMan.id
where (TradesMan.kName like ?)
and (TradesManPs.oeNo like ?)
对应的HQL为:
select tp.tradesMan
from TradesManPs tp
where tp.tradesMa.kName like :kName
and tp.oeNo like :oeNo
你的方法可以用,不过效率低了些,tradesMan里有1000条记录,而TradesManPs里有100万条数据,查询速度可想而知了,并且查出来还必须得把tp.tradesMan里重复的去掉呢!
另外TradesManP类定义中的lsId是不需要的.