这是SQL
SELECT goods.* FROM
(SELECT * FROM yxgl_huodongjiangpin AS hdjp
WHERE hdjp.HDJL_ID = '712e452e-075d-43288981-62804c8cc615') AS jp,
kcgl_goods AS goods
WHERE jp.GOODS_ID = goods.GOODS_ID;
这是HQL
select goods from
(select hdjp from YxglHuodongjiangpin as hdjp where hdjp.hdjpId=?) as jp,
KcglGoods as goods
where jp.goodsId=goods.goodsId;
执行后的异常,
严重: Servlet.service() for servlet [default] in context with path [/nwmrmf] threw exception [org.springframework.orm.hibernate3.HibernateQueryException: unexpected token: ( near line 1, column 19 [select goods from (select hdjp from com.turing.manage.entity.YxglHuodongjiangpin as hdjp where hdjp.hdjpId=?) as jp,com.turing.manage.entity.KcglGoods as goods where jp.goodsId=goods.goodsId]; nested exception is org.hibernate.hql.ast.QuerySyntaxError: unexpected token: ( near line 1, column 19 [select goods from (select hdjp from com.turing.manage.entity.YxglHuodongjiangpin as hdjp where hdjp.hdjpId=?) as jp,com.turing.manage.entity.KcglGoods as goods where jp.goodsId=goods.goodsId]] with root cause
line 1:19: unexpected token: (
at org.hibernate.hql.antlr.HqlBaseParser.fromRange(HqlBaseParser.java:1200)
at org.hibernate.hql.antlr.HqlBaseParser.fromClause(HqlBaseParser.java:1041)
at org.hibernate.hql.antlr.HqlBaseParser.selectFrom(HqlBaseParser.java:759)
at org.hibernate.hql.antlr.HqlBaseParser.queryRule(HqlBaseParser.java:611)
at org.hibernate.hql.antlr.HqlBaseParser.selectStatement(HqlBaseParser.java:263)
at org.hibernate.hql.antlr.HqlBaseParser.statement(HqlBaseParser.java:150)
at org.hibernate.hql.ast.QueryTranslatorImpl.parse(QueryTranslatorImpl.java:209)
at org.hibernate.hql.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:127)
at org.hibernate.hql.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:83)
at org.hibernate.impl.SessionFactoryImpl.getQuery(SessionFactoryImpl.java:427)
at org.hibernate.impl.SessionImpl.getQueries(SessionImpl.java:884)
at org.hibernate.impl.SessionImpl.list(SessionImpl.java:834)
at org.hibernate.impl.QueryImpl.list(QueryImpl.java:74)
at com.turing.framework.page.BasicDao$1.doInHibernate(BasicDao.java:77)
请诸位帮我看下我的HQL哪里写的不对,SQL是在数据库里执行是正确的,现在就是HQL的问题!
第一次问问题,送分。求解决,sqlexception
SELECT goods.* FROM
(SELECT * FROM yxgl_huodongjiangpin AS hdjp
WHERE hdjp.HDJL_ID = '712e452e-075d-43288981-62804c8cc615') AS jp,
kcgl_goods AS goods
WHERE jp.GOODS_ID = goods.GOODS_ID;
这是HQL
select goods from
(select hdjp from YxglHuodongjiangpin as hdjp where hdjp.hdjpId=?) as jp,
KcglGoods as goods
where jp.goodsId=goods.goodsId;
执行后的异常,
严重: Servlet.service() for servlet [default] in context with path [/nwmrmf] threw exception [org.springframework.orm.hibernate3.HibernateQueryException: unexpected token: ( near line 1, column 19 [select goods from (select hdjp from com.turing.manage.entity.YxglHuodongjiangpin as hdjp where hdjp.hdjpId=?) as jp,com.turing.manage.entity.KcglGoods as goods where jp.goodsId=goods.goodsId]; nested exception is org.hibernate.hql.ast.QuerySyntaxError: unexpected token: ( near line 1, column 19 [select goods from (select hdjp from com.turing.manage.entity.YxglHuodongjiangpin as hdjp where hdjp.hdjpId=?) as jp,com.turing.manage.entity.KcglGoods as goods where jp.goodsId=goods.goodsId]] with root cause
line 1:19: unexpected token: (
at org.hibernate.hql.antlr.HqlBaseParser.fromRange(HqlBaseParser.java:1200)
at org.hibernate.hql.antlr.HqlBaseParser.fromClause(HqlBaseParser.java:1041)
at org.hibernate.hql.antlr.HqlBaseParser.selectFrom(HqlBaseParser.java:759)
at org.hibernate.hql.antlr.HqlBaseParser.queryRule(HqlBaseParser.java:611)
at org.hibernate.hql.antlr.HqlBaseParser.selectStatement(HqlBaseParser.java:263)
at org.hibernate.hql.antlr.HqlBaseParser.statement(HqlBaseParser.java:150)
at org.hibernate.hql.ast.QueryTranslatorImpl.parse(QueryTranslatorImpl.java:209)
at org.hibernate.hql.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:127)
at org.hibernate.hql.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:83)
at org.hibernate.impl.SessionFactoryImpl.getQuery(SessionFactoryImpl.java:427)
at org.hibernate.impl.SessionImpl.getQueries(SessionImpl.java:884)
at org.hibernate.impl.SessionImpl.list(SessionImpl.java:834)
at org.hibernate.impl.QueryImpl.list(QueryImpl.java:74)
at com.turing.framework.page.BasicDao$1.doInHibernate(BasicDao.java:77)
请诸位帮我看下我的HQL哪里写的不对,SQL是在数据库里执行是正确的,现在就是HQL的问题!
第一次问问题,送分。求解决,sqlexception
解决方案 »
- JPA中TIMESTAMP对应ORACLE的问题
- 用java ee 如何控制 word ,excel,
- 一个很郁闷的问题。
- wtp2.0开发ejb的问题
- JDBC Connection
- 怎么修改,能播放mp3格式音乐,并且可以控制结束播放音乐
- 【hibernate + tomcat + oracle 配置问题,在线等待~~~~】
- 请教:方向的问题
- CMP2.0+WebLogic6.1环境下可以实现EJB-QL的动态创建吗?
- struts 中WEB.XML 和CONFIG.XML的区别
- 如何用Coroutine 实现 经典 producer/consumer 问题?
- MyEclipse Debug运行不了
where hdjp.hdjpId=?
用原生sql就可以了。
where goodsId in
(select goodsId from YxglHuodongjiangpin as hdjp where hdjp.hdjpId='xxxxxxx')
上面这样貌似效率不好 。
hibernate有提供createSQLQuery 直接可以用sql来查询 ,具体sql效率请自己优化
然后在转换成对应的实体 使用
List list = session.createSQLQuery(sql).setResultTransformer(Transformers.aliasToBean(实体.class)).list()