java - Using inner join on hibernate returning token uknown -
i'm having trouble hibernate. i'm trying create query return number of consults foreach medical ward, run sql on pgadmin , well, when tried create same sql on hibernate, has return erros. here code.
sql:
select a.cod_ala ,count(cod_consulta) max consulta c inner join medico m on m.cod_medico = c.cod_medico inner join ala on a.cod_ala = m.cod_ala group a.cod_ala
java:
public void getconsultasala() { string sql = "select a.cod_ala, count(cod_consulta) max consulta c" +" inner join medico m on m.cod_medico = c.cod_medico" +" inner join ala on a.cod_ala = m.cod_ala" +" group a.cod_ala"; query query; system.out.println(sql); this.session = generalcontroller.getsession(); query = this.session.createquery(sql); list list = query.list(); int = 0; while(list.iterator().hasnext()) { system.out.println(list.get(i++)); } }
errors:
jul 01, 2015 8:43:14 pm org.hibernate.hql.internal.ast.errorcounter reporterror error: line 1:149: unexpected token: on jul 01, 2015 8:43:14 pm org.hibernate.hql.internal.ast.errorcounter reporterror error: line 1:149: unexpected token: on line 1:149: unexpected token: on @ org.hibernate.hql.internal.antlr.hqlbaseparser.fromjoin(hqlbaseparser.java:1694) @ org.hibernate.hql.internal.antlr.hqlbaseparser.fromclause(hqlbaseparser.java:1349) @ org.hibernate.hql.internal.antlr.hqlbaseparser.selectfrom(hqlbaseparser.java:1055) @ org.hibernate.hql.internal.antlr.hqlbaseparser.queryrule(hqlbaseparser.java:701) @ org.hibernate.hql.internal.antlr.hqlbaseparser.selectstatement(hqlbaseparser.java:294) @ org.hibernate.hql.internal.antlr.hqlbaseparser.statement(hqlbaseparser.java:157) @ org.hibernate.hql.internal.ast.querytranslatorimpl.parse(querytranslatorimpl.java:266) @ org.hibernate.hql.internal.ast.querytranslatorimpl.docompile(querytranslatorimpl.java:180) @ org.hibernate.hql.internal.ast.querytranslatorimpl.compile(querytranslatorimpl.java:136) @ org.hibernate.engine.query.spi.hqlqueryplan.<init>(hqlqueryplan.java:105) @ org.hibernate.engine.query.spi.hqlqueryplan.<init>(hqlqueryplan.java:80) @ org.hibernate.engine.query.spi.queryplancache.gethqlqueryplan(queryplancache.java:168) @ org.hibernate.internal.abstractsessionimpl.gethqlqueryplan(abstractsessionimpl.java:221) @ org.hibernate.internal.abstractsessionimpl.createquery(abstractsessionimpl.java:199) @ org.hibernate.internal.sessionimpl.createquery(sessionimpl.java:1778) @ org.hibernate.control.consultscontroller.getconsultasala(consultscontroller.java:473) @ org.menu.menuconsulta.menuconsultas(menuconsulta.java:97) @ org.hibernate.mainapp.menuprincipal(mainapp.java:80) @ org.hibernate.mainapp.main(mainapp.java:145) exception in thread "main" org.hibernate.hql.internal.ast.querysyntaxexception: unexpected token: on near line 1, column 98 [select a.cod_ala, count(cod_consulta) max org.model.consulta c inner join medico m on m.cod_medico = c.cod_medico inner join ala on a.cod_ala = m.cod_ala group a.cod_ala] @ org.hibernate.hql.internal.ast.querysyntaxexception.convert(querysyntaxexception.java:54) @ org.hibernate.hql.internal.ast.querysyntaxexception.convert(querysyntaxexception.java:47) @ org.hibernate.hql.internal.ast.errorcounter.throwqueryexception(errorcounter.java:79) @ org.hibernate.hql.internal.ast.querytranslatorimpl.parse(querytranslatorimpl.java:276) @ org.hibernate.hql.internal.ast.querytranslatorimpl.docompile(querytranslatorimpl.java:180) @ org.hibernate.hql.internal.ast.querytranslatorimpl.compile(querytranslatorimpl.java:136) @ org.hibernate.engine.query.spi.hqlqueryplan.<init>(hqlqueryplan.java:105) @ org.hibernate.engine.query.spi.hqlqueryplan.<init>(hqlqueryplan.java:80) @ org.hibernate.engine.query.spi.queryplancache.gethqlqueryplan(queryplancache.java:168) @ org.hibernate.internal.abstractsessionimpl.gethqlqueryplan(abstractsessionimpl.java:221) @ org.hibernate.internal.abstractsessionimpl.createquery(abstractsessionimpl.java:199) @ org.hibernate.internal.sessionimpl.createquery(sessionimpl.java:1778) @ org.hibernate.control.consultscontroller.getconsultasala(consultscontroller.java:473) @ org.menu.menuconsulta.menuconsultas(menuconsulta.java:97) @ org.hibernate.mainapp.menuprincipal(mainapp.java:80) @ org.hibernate.mainapp.main(mainapp.java:145)
ps: sorry bad grammar, english second language
there no "on" inner join in hibernate; use entity , not actual table in hibernate.joins can done between associated entities
example:
select u user u inner join u.name name where..
the on clause unnecessary, because hibernate knows mapping of association(ie onetoone/manytoone etc).
Comments
Post a Comment